root包package.json的resolutions配置对直接依赖不生效问题
问题原因
resolutions是 Yarn 原生支持的配置字段,npm 本身默认不识别该字段,你使用的npm-force-resolutions工具仅实现了对嵌套依赖版本的覆盖能力,不支持修改当前项目显式声明的直接依赖的版本约束。- 你在
dependencies中明确指定了 axios 版本为0.21.2,直接依赖的版本声明优先级高于 resolutions 配置,安装时会优先遵循该约束,因此最终安装的是 0.21.2 版本。
解决方案
- 方案一:直接修改
dependencies中 axios 的版本为0.24.0,这是最高效的处理方式,原有的 resolutions 配置会继续生效,强制所有嵌套依赖的 axios 也使用 0.24.0 版本。 - 方案二:如果需要保留原有直接依赖的版本声明,可使用 npm 8.3+ 原生支持的
overrides字段替代 resolutions 配置,overrides优先级高于直接依赖的版本约束,无需额外依赖第三方工具和preinstall钩子,配置示例如下:
"dependencies": { "axios": "0.21.2" }, "overrides": { "axios": "0.24.0" }
配置完成后直接执行 npm install,即可让直接依赖和所有嵌套依赖的 axios 都安装 0.24.0 版本。
内容的提问来源于stack exchange,提问作者Unknown developer
相关产品推荐
相关产品推荐

