Nth*_*ree 9 dependencies node.js npm npm-install npm-scripts
我正在使用的脚本部分package.json来强制解决方案:
"preinstall": "npx npm-force-resolutions"
Run Code Online (Sandbox Code Playgroud)
在分辨率部分,我输入graceful-fs了指定的版本:
"resolutions": {
"graceful-fs": "^4.2.4",
},
Run Code Online (Sandbox Code Playgroud)
当我运行npm i一切都正确安装时,会考虑设置版本。但是后来当我安装一个额外的模块时,例如npm i random-package,我的设置版本被扔掉了,我最终得到graceful-fs@1.2.3了一些依赖项中的其他低版本。
如果我清除 node_modules 文件夹并npm i再次运行,一切都会再次正常。
我还尝试将分辨率设置得更具体,例如
"resolutions": {
"glob/**/graceful-fs": "^4.2.4",
},
Run Code Online (Sandbox Code Playgroud)
但这无济于事。
我也试过:
但没有运气。
我错过了什么?
R. *_*olt 15
最好的方法是将preinstall脚本更改为:
"preinstall": "([ ! -f package-lock.json ] && npm install --package-lock-only --ignore-scripts --no-audit); npx npm-force-resolutions"
Run Code Online (Sandbox Code Playgroud)
npm install仅当初始 package-lock.json 尚不存在时,才会运行它来创建它。
这比总是运行两者(npm + npx)要快得多。
从 npm 8.3.0 开始,您还可以使用 npm 的override:
{
"overrides": {
"graceful-fs": "^4.2.4"
}
}
Run Code Online (Sandbox Code Playgroud)
小智 8
在解决方案部分,您必须修复版本
"resolutions": {
"graceful-fs": "4.2.4",
},
Run Code Online (Sandbox Code Playgroud)
我自动执行此操作的最佳解决方案是如上所述修改预安装脚本:
"preinstall": "npm install --package-lock-only --ignore-scripts && npx npm-force-resolutions",
@NthDegree,您好,对我有用的唯一方法是首先运行正常的 npm install,然后将 packages-lock.json 文件添加到 git。执行此操作后,当您添加 "preinstall": "npx npm-force-resolutions" 时,它始终将依赖项解析更新为提到的版本。
我不确定将 packages-lock.json 文件添加到 git 是好还是坏,但是通过使用这种方法,CI/CD 管道也可以工作。
| 归档时间: |
|
| 查看次数: |
10050 次 |
| 最近记录: |