當使用 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