一文詳解npm如何更新項目最新依賴包
NPM 是什么?
Node 軟件包管理器(NPM)提供了各種功能來幫助你安裝和維護(hù)項目的依賴關(guān)系。
由于錯誤修復(fù)、新功能和其他更新,依賴關(guān)系可能會隨著時間的推移而變得過時。你的項目依賴越多,就越難跟上這些更新。
老舊的軟件包會對安全構(gòu)成威脅,并會對性能產(chǎn)生負(fù)面影響。最新的軟件包可以防止出現(xiàn)漏洞。這意味著定期檢查和更新依賴是很重要的。
如何保持依賴是最新的
現(xiàn)在,你可以逐一查看 package.json 中的每一個單獨的包,改變版本,然后運行 npm install <package>@latest 來獲得最新版本。但這并不是最有效的方法。
想象一下,如果你有 20 個或更多的包,可以使用版本升級。相反,你應(yīng)該制定一個工作流程,在過期的依賴關(guān)系數(shù)量增加和升級變得越來越難之前,定期檢查新版本。
下面是一個我保持更新的工作流程:首先,發(fā)現(xiàn)哪些軟件包需要更新,以及版本落后的程度。接下來,選擇單獨或一起批量更新軟件包。始終對更新進(jìn)行測試,以確保沒有發(fā)生破壞性變化。
我更喜歡單獨執(zhí)行主要版本的更新。對于主要的更新,你很可能會遇到破壞性的變化。與許多包相比,撤銷或處理與一個包有關(guān)的代碼變化要容易得多。
在這篇文章中,我將詳細(xì)介紹檢查和升級依賴關(guān)系的方法。
怎樣使用 npm outdated 命令
npm outdated
該命令將檢查每個已安裝的依賴關(guān)系,并將當(dāng)前版本與 npm registry 中的最新版本進(jìn)行比較。它在終端打印出一個表格,概述了可用的版本。
它是內(nèi)置在 NPM 中的,所以不需要下載額外的軟件包。npm outdated 是一個很好的開始,可以了解所需的依賴性更新的數(shù)量。

- Current 是當(dāng)前安裝的版本。
- Wanted 是根據(jù)semver 范圍內(nèi)的軟件包的最大版本。
- Latest 是在 npm registry 中被標(biāo)記為最新的軟件包版本。
使用這種方法,要安裝每個軟件包的更新,你只需要運行:
npm update
請記住,使用 npm update 它永遠(yuǎn)不會更新到一個主要的(major),具有破壞性變化的版本。它更新 package.json 和 package-lock.json 中的依賴關(guān)系。它將使用想要的版本。
為了獲得 "最新 "的版本,在單個安裝中附加 @latest,例如 npm install react@latest。
怎樣使用 npm-check-updates
對于高級和可定制的升級體驗,我推薦 npm-check-updates。這個包可以做所有 npm oudated 和 npm upgrade 能做的事情,并增加了一些自定義選項。不過,它確實需要安裝一個包。
要開始使用,請在全局安裝 npm-check-updates 軟件包:
npm install -g npm-check-updates
然后,運行 ncu 來顯示要升級的軟件包。與 npm outdated 類似,它不會產(chǎn)生任何變化。
ncu Checking package.json [====================] 12/12 100% @testing-library/user-event ^13.5.0 → ^14.2.1 @types/jest ^27.5.2 → ^28.1.4 @types/node ^16.11.42 → ^18.0.1 Run ncu -u to upgrade package.json
要升級依賴性,你只需要運行:
ncu --upgrade // or ncu -u

- Red (顯示紅色) = major (主版本,或者說是大版本)
- Cyan (顯示青色) = minor(次要版本)
- Green(顯示綠色) = patch (補(bǔ)丁版本)
這個方法只更新 package.json 文件中的依賴關(guān)系,并且會選擇最新的版本,即使它包括一個破壞性的變化。使用這種方法,npm install 不會自動運行,所以一定要在之后運行它來更新 package-lock.json。
要選擇你喜歡的版本類型,運行 ncu --target [patch, minor, latest, newest, greatest]。
如何使用 npm-check-updates 互動模式
ncu --interactive // or ncu -i
互動模式允許你選擇特定的軟件包進(jìn)行更新。默認(rèn)情況下,所有軟件包都被選中。
向下瀏覽每一個軟件包,用空格來取消選擇,當(dāng)你準(zhǔn)備好升級所有選擇的軟件包時,回車鍵(enter)確定。

有幾種方法可以提升交互式 npm-check-updates 的體驗。
ncu --interactive --format group
這個命令將軟件包分組并組織成 主版本(major)、次要(minor)和補(bǔ)丁(patch)版本。

npm-check-updates 提供了其他有用的工具,如 doctor mode,它可以安裝升級并運行測試以檢查破壞性變化。
總結(jié)
養(yǎng)成定期更新你的依賴關(guān)系的習(xí)慣,將有助于你的應(yīng)用程序的安全性和性能。
npm oudated 和 npm-check-updates 都是有用的工具,可以檢查那些可以使用版本升級的軟件包。
https://www.freecodecamp.org/chinese/news/how-to-update-npm-dependencies/
到此這篇關(guān)于npm如何更新項目最新依賴包的文章就介紹到這了,更多相關(guān)npm更新項目最新依賴包內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
基于Express和Multer實現(xiàn)文件本地服務(wù)器文件上傳功能
在現(xiàn)代應(yīng)用程序中,文件上傳功能成為了用戶共享和存儲數(shù)據(jù)的重要途徑,所以本文我們一起來探討文件上傳中間件的重要性,并提供常見的實現(xiàn)方法和相應(yīng)的代碼吧2023-06-06
Nodejs高擴(kuò)展性的模板引擎 functmpl簡介
本文給大家分享的是一款nodejs高擴(kuò)展性的模板引擎functmpl的簡單介紹以及用法詳解,有需要的小伙伴可以參考下2017-02-02
node.js實現(xiàn)微信JS-API封裝接口的示例代碼
這篇文章主要介紹了node.js實現(xiàn)微信JS-API封裝接口的示例代碼,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2017-09-09
node.js使用Moment.js js 時間計算方法示例小結(jié)
這篇文章主要介紹了node.js使用Moment.js js 時間計算方法,結(jié)合實例形式分析了Moment.js js模塊時間計算的常用操作技巧與相關(guān)注意事項,需要的朋友可以參考下2023-05-05

