JavaScript
Node.js

Node.jsで古いパッケージを一気に更新する


背景

material-uiを使おうと思ったら、

ジェネレータで作ったベースが古すぎて使えなかった際に、

一気にnpmをアップデートする方法があったのでメモします。

結構人気なnpmのようなので、今更感があるかもしれませんが!


環境

node.js v8.12

npm v6.3.0


準備する


古いバージョンのnpmを入れておく

とりあえず何でもいいのでいれます。

$ npm install sass-loader@6.0.6 style-loader@0.19.0 webpack@3.6.0

これを1発でバージョンアップします。


package.json

~~省略~~

"dependencies": {
"sass-loader": "^6.0.6",
"style-loader": "^0.19.0",
"webpack": "^3.6.0"
}


全アップデートできるライブラリを入れる

$ npm install -D npm-check-updates

特に問題ないなら、

-gをつけて、グローバルインストールしても良いと思います。

今回は検証なのでローカルインストールにしときます。

npmの説明はこちらです。

npm-check-updates公式


実行する

グローバルインストール時はnpxは不要です。

$ npx npm-check-updates -u


[INFO]: You can also use ncu as an alias
Upgrading ~~~~\package.json
[====================] 4/4 100%

sass-loader ^6.0.6 → ^7.1.0
style-loader ^0.19.0 → ^0.23.1
webpack ^3.6.0 → ^4.29.6

Run npm install to install new versions.

これでまずpackage.jsonのみ更新されます。


package.json

~~省略~~

"dependencies": {
"sass-loader": "^7.1.0",
"style-loader": "^0.23.1",
"webpack": "^4.29.6"
},

パッケージの指示通り、下記を実行します。

$ npm install

~~省略~~

added 84 packages from 74 contributors, removed 77 packages, updated 25 packages and audited 4439 packages in 13.19s
found 0 vulnerabilities

2コマンドで全部更新されます。

すごく便利ですので、未導入の方は導入を検討されてもいいかもしれません。

なお、これでは更新できないものもあったりするので、

気をつけてください。

具体的にはBabel6から7へのアップデートはこれでは無理です。

他にもあると思うので、エラーがでたら1つ1つ対処すれば問題ないです。