3 回答

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再次運行。

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 專家對這項技術的看法。
添加回答
舉報