網站導覽
目錄
npm-dedupe
選擇 CLI 版本
目錄
概要
npm dedupealias: ddp
說明
搜尋本機套件樹,並嘗試透過將相依性往上移至樹狀結構中,讓多個相依套件可以更有效地共用,來簡化整體結構。
例如,考慮這個相依性圖表
a+-- b <-- depends on c@1.0.x| `-- c@1.0.3`-- d <-- depends on c@~1.0.9`-- c@1.0.10
在此情況下,npm dedupe
會將樹狀結構轉換為
a+-- b+-- d`-- c@1.0.10
由於節點模組查詢的階層性質,b 和 d 都會從樹狀結構根層級的單一 c 套件中取得相依性。
在某些情況下,您可能有如下所示的相依圖形
a+-- b <-- depends on c@1.0.x+-- c@1.0.3`-- d <-- depends on c@1.x`-- c@1.9.9
在安裝過程中,b
的 c@1.0.3
相依項被放置在樹的根目錄中。儘管 d
對 c@1.x
的相依項可以由 c@1.0.3
滿足,但因為 npm 預設偏好更新,即使這樣做會造成重複,因此使用了較新的 c@1.9.0
相依項。
執行 npm dedupe
將會導致 npm 注意到重複並重新評估,刪除巢狀的 c
模組,因為根目錄中的模組就已足夠。
若要在安裝過程中偏好重複消除而非新穎性,請執行 npm install --prefer-dedupe
或 npm config set prefer-dedupe true
。
忽略引數。Dedupe 永遠作用於整個樹。
請注意,此操作會轉換相依項樹,但絕不會導致安裝新的模組。
使用 npm find-dupes
將會以 --dry-run
模式執行命令。
注意:npm dedupe
絕不會更新您專案 package.json
中直接相依項的 semver 值,如果您想要更新 package.json
中的值,您可以改為執行:npm update --save
。
組態
install-strategy
- 預設值:
hoisted
- 類型:
hoisted
、nested
、shallow
或linked
設定在 node_modules 中安裝套件的策略。hoisted(預設值):在頂層安裝非重複的套件,並在目錄結構中視需要安裝重複的套件。nested:(以前稱為 --legacy-bundling)就地安裝,不提升。shallow(以前稱為 --global-style)僅在頂層安裝直接相依項。linked:(實驗性)安裝在 node_modules/.store 中,就地連結,不提升。
legacy-bundling
- 預設值:false
- 類型:布林值
- 已過時:此選項已過時,建議改用
--install-strategy=nested
與其在 node_modules
中提升套件安裝,不如以與其相依的方式安裝套件。這可能會造成非常深的目錄結構和重複的套件安裝,因為沒有重複消除。設定 --install-strategy=nested
。
global-style
- 預設值:false
- 類型:布林值
- 已過時:此選項已過時,建議改用
--install-strategy=shallow
僅在頂層 node_modules
中安裝直接相依項,但在較深的相依項中提升。設定 --install-strategy=shallow
。
strict-peer-deps
- 預設值:false
- 類型:布林值
如果設定為 true
,且未設定 --legacy-peer-deps
,則任何衝突的 peerDependencies
都將被視為安裝失敗,即使 npm 可以根據非同儕相依關係合理猜測適當的解析方式。
預設情況下,相依關係圖中較深層的衝突 peerDependencies
會使用最近的非對等相依關係規格來解決,即使這樣做會導致某些套件接收其套件的 peerDependencies
物件中設定的範圍外的對等相依關係。
當執行此類覆寫時,會印出一個警告,說明衝突和所涉及的套件。如果設定 --strict-peer-deps
,則此警告會視為失敗。
package-lock
- 預設值:true
- 類型:布林值
如果設定為 false,則在安裝時忽略 package-lock.json
檔案。如果 save
為 true,這也會防止寫入 package-lock.json
。
omit
- 預設值:如果
NODE_ENV
環境變數設定為 'production',則為 'dev',否則為空。 - 類型:'dev'、'optional' 或 'peer'(可以設定多次)
從磁碟上的安裝樹中省略的相依關係類型。
請注意,這些相依關係仍然會解析並新增到 package-lock.json
或 npm-shrinkwrap.json
檔案中。它們只是不會實際安裝在磁碟上。
如果套件類型同時出現在 --include
和 --omit
清單中,則會將其包含在內。
如果產生的省略清單包含 'dev'
,則 NODE_ENV
環境變數會設定為 'production'
以適用於所有生命週期指令碼。
include
- 預設值
- 類型:'prod'、'dev'、'optional' 或 'peer'(可以設定多次)
允許定義要安裝的相依關係類型的選項。
這是 --omit=<type>
的反向操作。
在 --include
中指定的相依關係類型不會被省略,無論在命令列中指定省略/包含的順序為何。
ignore-scripts
- 預設值:false
- 類型:布林值
如果為 true,npm 就不會執行 package.json 檔案中指定的指令碼。
請注意,明確用於執行特定指令碼的命令,例如 npm start
、npm stop
、npm restart
、npm test
和 npm run-script
,如果設定 ignore-scripts
,仍然會執行其預期的指令碼,但不會執行任何前置或後置指令碼。
audit
- 預設值:true
- 類型:布林值
當「true」時,連同目前的 npm 指令,將稽核報告提交至預設登錄程式和所有為範圍設定的登錄程式。請參閱 npm audit
的文件,以取得關於提交內容的詳細資料。
bin-links
- 預設值:true
- 類型:布林值
指示 npm 為套件可執行檔建立符號連結(或在 Windows 上為 .cmd
shim)。
設為 false 以不執行此動作。這可用於解決某些檔案系統不支援符號連結的事實,即使在表面上是 Unix 系統。
fund
- 預設值:true
- 類型:布林值
當「true」時,在每次 npm install
的結尾顯示訊息,確認尋找資金的相依項數量。請參閱 npm fund
以取得詳細資料。
dry-run
- 預設值:false
- 類型:布林值
表示您不希望 npm 進行任何變更,且它應該只報告它會執行的動作。這可以傳遞至任何修改您當地安裝的指令,例如 install
、update
、dedupe
、uninstall
,以及 pack
和 publish
。
注意:這不會受到其他網路相關指令的尊重,例如 dist-tags
、owner
等。
workspace
- 預設值
- 類型:字串(可以設定多次)
在當前專案設定的工作空間環境中執行指令,同時透過僅執行此設定選項所定義的工作空間來進行篩選。
下列為 workspace
設定的有效值
- 工作空間名稱
- 工作空間目錄路徑
- 父工作空間目錄路徑(將會選取該資料夾中的所有工作空間)
當設定為 npm init
指令時,這可能會設定為尚未存在的資料夾,以建立資料夾並將其設定為專案中的全新工作空間。
此值不會匯出至子程序的環境。
workspaces
- 預設值:null
- 類型:null 或布林值
設為 true 以在所有已設定工作區的內容中執行指令。
明確將此設定為 false 將導致類似 install
的指令完全忽略工作區。未明確設定時
- 在
node_modules
樹狀結構中執行的指令(安裝、更新等)會將工作區連結到node_modules
資料夾中。- 執行其他動作的指令(測試、執行、發布等)會在根目錄專案中執行,除非在workspace
設定中指定一個或多個工作區。
此值不會匯出至子程序的環境。
include-workspace-root
- 預設值:false
- 類型:布林值
在為指令啟用工作區時,包含工作區根目錄。
為 false 時,透過 workspace
設定指定個別工作區,或透過 workspaces
標記指定所有工作區,將導致 npm 僅在指定的工作區中執行,而不是在根目錄專案中執行。
此值不會匯出至子程序的環境。
install-links
- 預設值:false
- 類型:布林值
設定時,file: 協定相依性會打包並安裝為一般相依性,而不是建立符號連結。此選項對工作區沒有影響。