npm-check-updates でpackage.jsonに記載されたnode moduleの更新状況を確認する

タイトル長い。

Node.jsではアプリケーションで利用するnpmモジュールを package.json に定義しておく訳ですが、こちらで定義されたそれぞれのモジュールのアップデート状況を確認したり併せてpackage.jsonを更新する方法が知りたかったのでその際調べたメモ。

npmコマンドで npm outdated とすることでpackakge.jsonに定義された各パッケージの現在インストールされているバージョン、package.jsonで定義されているバージョン、npmで管理されている最新のバージョンを列挙することはできるのだけど、実際に手元にあるpackage.jsonの更新までは行ってくれません。

そこでnpm-check-updatesを利用します。

まず、npm-check-updatesをインストール

$ npm install -g npm-check-updates

そうするとコマンドとして npm-check-updates がインストールされるのでpackage.jsonが置かれているパスで実行します。

$ npm-check-updates

"compression" can be updated from ^1.5.0 to ^1.5.1 (Installed: 1.5.0, Latest: 1.5.1)
"errorhandler" can be updated from ^1.4.0 to ^1.4.1 (Installed: 1.4.0, Latest: 1.4.1)
"loopback" can be updated from ^2.18.0 to ^2.19.0 (Installed: 2.18.0, Latest: 2.19.0)
"loopback-datasource-juggler" can be updated from ^2.32.0 to ^2.33.1 (Installed: 2.32.0, Latest: 2.33.1)
"youtube-api" can be updated from ^1.0.0 to ^1.0.1 (Installed: 1.0.0, Latest: 1.0.1)

更新可能なパッケージが確認できますね。

この更新を package.json に反映させたい場合は、 -u オプションを付けて実行します。

$ npm-check-updates -u

これでpackage.jsonが更新されるので実際に、 node_modules の中身を更新します。

$ npm update
compression@1.5.1 node_modules/compression
├── bytes@2.1.0
├── on-headers@1.0.0
(snip)
└── strong-remoting@2.20.0 (eventemitter2@0.4.14, qs@2.4.2, js2xmlparser@0.1.9, traverse@0.6.6, sse@0.0.6, request@2.58.0, mux-demux@3.7.9, jayson@1.2.0, xml2js@0.4.9)

これでpackage.jsonで定義されている全てのnode moduleを更新することができました。