簡體   English   中英

如何在不使用 npx 的情況下使用 npm-force-resolutions 強制 npm 依賴項?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM