![](/img/trans.png)
[英]npm-force-resolutions not working when installing a new package
[英]How do I force npm dependencies using npm-force-resolutions without using npx?
我需要在嵌套依賴項中強制使用特定的 package 版本。 對於這樣的事情, npm-force-resolutions
效果很好。 一個典型的解決方案是添加script
"preinstall": "npx npm-force-resolutions"
和"resolutions": {}
,其中 package 名稱作為鍵,版本作為值。
例如,如果我們在^1.7.3
有一個node-fetch
的嵌套依賴項,但我們在^2.6.1
需要它,則提取的package.json
腳本可能如下所示:
{
"scripts": {
"preinstall": "npx npm-force-resolutions"
},
"resolutions": {
"node-fetch": "^2.6.1"
}
}
我面臨的問題是,出於我環境中的安全原因,我無權訪問npx
。 我嘗試提出的解決方案是將npm-force-resolutions
作為開發依賴項安裝,然后在package.json
文件中添加./node_modules/.bin/npm-force-resolutions
作為postinstall
script
:
{
"scripts": {
"postinstall": "./node_modules/.bin/npm-force-resolutions"
},
"resolutions": {
"node-fetch": "^2.6.1"
}
}
可悲的是,在運行npm install
之后,分辨率沒有更新(在上面的例子中, node-fetch
仍然在^1.7.3
)。 然而,一旦npm
完成安裝所有軟件包,手動運行./node_modules/.bin/npm-force-resolutions
會按預期強制分辨率(將node-fetch
從^1.7.3
更改為^2.6.1
)。
有沒有辦法在安裝生命周期內強制解決但不調用npx
? 由於涉及持續集成,重要的是它發生在對npm install
的一次調用中。
可能這不是最好的解決方案,但您可以嘗試安裝該依賴項並在 preinstall 掛鈎中運行它而不是運行 npx:
"preinstall": "npm i npm-force-resolutions && ./node_modules/.bin/npm-force-resolutions",
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.