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を更新することができました。