为什么npm安装的依赖版本与package-lock.json中指定的版本不一致?
问题原因
这是npm默认的语义化版本依赖解析规则导致的,你没有遗漏任何配置:
- 你查到的Stylelint 14.1.0对postcss的依赖声明用的是
^8.3.11,开头的^是插入符号版本范围符,规则为大版本号不变的前提下,允许安装更高的兼容版本。postcss 8.4.4属于8.x.x版本范围,完全符合^8.3.11的依赖要求。 - 同时Stylelint依赖的
postcss-safe-parser@6.0.0对postcss的版本要求也兼容8.4.4,npm会优先选择能满足所有依赖项要求的最高可用版本,还会自动对同一版本范围的依赖做去重处理,也就是你输出里看到的deduped标记。
如果需要强制使用8.3.11版本的postcss,可以在package.json中添加overrides字段(npm 8.3及以上版本支持,你当前使用的8.1.4版本可先升级npm后配置)锁定版本:
{ "name": "untitled", "version": "0.0.0", "private": true, "devDependencies": { "stylelint": "^14.1.0" }, "overrides": { "postcss": "8.3.11" } }
修改后重新执行npm i即可生效。
内容的提问来源于stack exchange,提问作者Greg
相关产品推荐
相关产品推荐

