亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何使用 npm 更新依賴項的依賴項

如何使用 npm 更新依賴項的依賴項

慕少森 2022-05-22 15:48:05
我很想知道我找不到這個簡單問題的答案。我也很想知道這npm update不能解決這個問題。我無法在此處發布完整的依賴關系樹,但無論如何讓我描述一下我的問題:minimist 已過時(版本 1.2.0)并且在此版本中存在安全漏洞。軟件包需要 minimist 將依賴項定義為 ^1.2.0 - 因此它與 1.2.2 兼容。常見的解決方案是將其放入package.jsoninsidedevDependencies或dependencieswith ^1.2.2。我不想把它放進去package.json。我覺得npm update還應該更新間接依賴項。我錯過了什么嗎?在這里你可以看到我的 package-lock.json:https ://github.com/tflori/riki-community/blob/master/package-lock.json和輸出npm ls minimist:riki-community@ /home/iras/work/projects/riki/community├─┬ [email protected]│ ├─┬ [email protected]│ │ └─┬ [email protected]│ │   └── [email protected]  deduped│ └─┬ [email protected]│   └── [email protected] ├─┬ [email protected]│ └─┬ @jest/[email protected]│   ├─┬ @jest/[email protected]│   │ └─┬ @babel/[email protected]│   │   └─┬ [email protected]│   │     └── [email protected] │   └─┬ [email protected]│     └─┬ [email protected]│       ├─┬ @cnakazawa/[email protected]│       │ └── [email protected]  deduped│       └── [email protected]  deduped├─┬ [email protected]│ └─┬ [email protected]│   └── [email protected] ├─┬ [email protected]│ └─┬ [email protected]│   └── [email protected] ├─┬ [email protected]│ └─┬ [email protected]│   └── [email protected]  deduped└─┬ [email protected]  └─┬ [email protected]    └─┬ [email protected]      └─┬ UNMET OPTIONAL DEPENDENCY [email protected]        └─┬ UNMET OPTIONAL DEPENDENCY [email protected]          ├─┬ UNMET OPTIONAL DEPENDENCY [email protected]          │ └── UNMET OPTIONAL DEPENDENCY [email protected]           └─┬ UNMET OPTIONAL DEPENDENCY [email protected]            └── UNMET OPTIONAL DEPENDENCY [email protected] 
查看完整描述

3 回答

?
www說

TA貢獻1775條經驗 獲得超8個贊

問題在于深度。從文檔中:


[email protected] 開始,npm 更新將只檢查頂級包。以前版本的 npm 也會遞歸地檢查所有依賴項。要獲得舊行為,請使用 npm --depth 9999 update。


所以我們必須提供我們想要更新的深度。在我的情況下,9999 花了很長時間,我取消了它。但是一個--depth 5就足夠了。


npm update --depth 5

如果那仍然沒有更新依賴關系,那么您必須手動更改package-lock.json.


打開package-lock.json并查找所有出現"minimist": {的對象并刪除該對象。


例子:


改變這個:


      "dependencies": {

        "minimist": {

          "version": "1.2.0",

          "bundled": true,

          "dev": true,

          "optional": true

        }

      }

對此:


      "dependencies": {

      }

并npm install再次運行。


查看完整回答
反對 回復 2022-05-22
?
胡子哥哥

TA貢獻1825條經驗 獲得超6個贊

從 npmv7.0.0開始,runningnpm update將始終更新所有包,而不僅僅是根package.json文件中指定的包。NPM已從命令中刪除 --depth選項npm update并更改其行為。

注意:仍然有可能某些底層包將過時的版本指定為依賴項,這將阻止npm update安裝最新版本。除了強制解決更新版本之外,您沒有太多選擇。


查看完整回答
反對 回復 2022-05-22
?
慕桂英3389331

TA貢獻2036條經驗 獲得超8個贊

如果您想遞歸更新所有依賴項,我相信這是最快、最強大的解決方案:


首先,確保提交任何更改,以防遇到git commit package*.json. 其次,根據需要使用npm outdated和更新您的任何直接依賴項npm update xyz


現在,使用 package-lock.json 的干凈構建更新所有包版本:


# remove current node_modules/ and package-lock.json

rm -rf package-lock.json node_modules/


# rebuild package-lock.json the the semantically-compatible 

# latest package versions & install node_modules/

npm install


# ensure nothing broke

npm test

如果有問題,回滾:


rm -rf package-lock.json node_modules/

git checkout package*.json

npm install

PS 這種技術對我來說效果很好,但我一直在學習更多關于 NPM 和包鎖的知識。我很想聽聽其他 NPM 專家對這項技術的看法。


查看完整回答
反對 回復 2022-05-22
  • 3 回答
  • 0 關注
  • 1259 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號