1. 程式人生 > >npm升級所有可更新包

npm升級所有可更新包

使用npm管理node的包,可以使用 npm update <name> 對單個包升級,但是沒有命令能夠把當前所有包都升級。

一個一個包的升級實在是太麻煩,就想找到一個升級所有本地包的方法: shell指令碼和 npm-ckeck

shell指令碼

使用shell指令碼升級npm包,首先所在找到需要升級的包和版本號,再使用 npm install 完成升級。

npm -g 是管理本地全域性包的命令。通過 npm -g outdated 可以檢視那些包有更新:

npm -g outdated

Package    Current  Wanted  Latest
Location appium 1.5.2 1.5.3 1.5.3 bower 1.7.0 1.7.9 1.7.9 cordova 5.4.1 6.2.0 6.2.0 eslint 2.13.0 3.0.0 3.0.0 fsevents 1.0.8 1.0.12 1.0.12 grommet 0.4.1 0.6.9 0.6.9 requirejs 2.1.22 2.2.0 2.2.0

這裡列出來了,當前版本,和最後的版本,只需要得到所有需要升級的包名和版本號就可以使用 npm -g install <name>

 直接升級了。

npm -g outdated 還可以使用目錄的方式展示,再從中提取出包名和版本號。

npm -g outdated --parseable --depth=0

/usr/local/lib/node_modules/appium:[email protected]5.3:appium@1.5.2:appium@1.5.3
...

在通過 cut 命令就可以得到最後要升級版本號和包名:

npm -g outdated --parseable --depth=0 | cut -d: -f2

appium@1.5.3
.....

完整的指令碼:

#!/bin/sh
set
-e #set -x for package in $(npm -g outdated --parseable --depth=0 | cut -d: -f2) do npm -g install "$package" done

npm-check

npm-check 是用來檢查npm依賴包是否有更新,錯誤以及不在使用的,我們也可以使用npm-check進行包的更新。

安裝npm-check:

npm install -g npm-check

檢查npm包的狀態:

npm-check -u -g

通過上下鍵可以移動游標,使用空格鍵可以選擇需要處理的包,回車直接進行處理。

選擇 [email protected] 包升級到 3.10.3 :

? Choose which packages to update. [email protected]3.10.3

$ npm install --global [email protected] --color=always
/usr/local/bin/npm -> /usr/local/lib/node_modules/npm/bin/npm-cli.js
/usr/local/lib
└─┬ [email protected]3.10.3
  ├── [email protected]1.0.4
  ├── has-unicode@2.0.1
  └── read-package[email protected]5.1.5

[npm-check] Update complete!
[npm-check] [email protected]3.10.3
[npm-check] You should re-run your tests to make sure everything works with the updates.

通過以上兩種方式可以更便利的管理本地的 npm 包。