當使用 npm install <packagename> 安裝軟件包時,該軟件包最新的可用版本會被下載並放入 node_modules
文件夾中,並且還會將相應的條目添加到當前文件夾中存在的 package.json
和 package-lock.json
文件中。
npm 會核計依賴,並安裝這些依賴最新的可用版本。
假設要安裝 cowsay
,這是一個很酷的命令行工具,可以讓母牛說話。
當 npm install cowsay 時,此條目會被添加到 package.json
文件中:
{ "dependencies": { "cowsay": "^1.3.1" } }
以下是 package-lock.json
的片段,為方便查看,在其中刪除了嵌套的依賴:
{ "requires": true, "lockfileVersion": 1, "dependencies": { "cowsay": { "version": "1.3.1", "resolved": "https://registry.npmjs.org/cowsay/-/cowsay-1.3.1.tgz", "integrity": "sha512-3PVFe6FePVtPj1HTeLin9v8WyLl+VmM1l1H/5P+BTTDkMAjufp+0F9eLjzRnOHzVAYeIYFF5po5NjRrgefnRMQ==", "requires": { "get-stdin": "^5.0.1", "optimist": "~0.6.1", "string-width": "~2.1.1", "strip-eof": "^1.0.0" } } } }
現在,這兩個文件告訴我們,已安裝了 cowsay 的 1.3.1
版本,並且更新的規則是 ^1.3.1
(這對於 npm 版本控制規則意味着 npm 可以更新到補丁版本和次版本:即 1.3.2
、1.4.0
、依此類推)。
如果有新的次版本或補丁版本,並且輸入了 npm update
,則已安裝的版本會被更新,並且 package-lock.json
文件會被新版本填充。
package.json
則保持不變。
若要發覺軟件包的新版本,則運行 npm outdated
以下是一個倉庫中一些過時的軟件包的列表,該倉庫已很長時間沒有更新:
這些更新中有些是主版本。 運行 npm update
不會更新那些版本。 主版本永遠不會被這種方式更新,因為它們(根據定義)會引入重大的更改,npm
希望為你減少麻煩。
若要將所有軟件包更新到新的主版本,則全局地安裝 npm-check-updates
軟件包:
npm install -g npm-check-updates
然后運行:
ncu -u
這會升級 package.json
文件的 dependencies
和 devDependencies
中的所有版本,以便 npm 可以安裝新的主版本。
現在可以運行更新了:
npm update
如果只是下載了項目還沒有 node_modules
依賴包,並且想先安裝新的版本,則運行:
npm install
原文地址:http://nodejs.cn/learn/update-all-the-nodejs-dependencies-to-their-latest-version