package.jsonのnpmのバージョンを一括で書き変えてくれるncuが便利だった
npm-check-updatesというNode.jsのモジュールを使ってみたら便利でしたという話です。
2013年のブックマークとかもあったので、別に新しいものではないと思うけど、私は知らなくて感動したのでした。
なにこれ?
package.json
に書かれているnpmのバージョンを、一括で最新に書き変えてくれるNode.jsのモジュール。ncu
コマンドひとつで一度に書き変えできて便利。- 実際に書き変える前に確認だけすることもできる。
- 「メジャーバージョンは固定で、それ以下を最新にしたい」などの細かい設定もオプションで可能。
どんなときに便利なの?
- 既存の
package.json
を流用して、同じnpmをそのまま使いたいけど、バージョンだけは新しくしたいとき。 - 昔つくったサイトのメンテナンスで、npmのバージョンだけを新しくしたいとき。
使い方
初回のみ、npm-check-updatesをグローバルにインストールする必要があります。
$ npm install -g npm-check-updates
👆によって、ncu
コマンドが使えるようになるので、その後は、対象のpackage.json
のあるディレクトリに移動して、ncu
コマンドを実行するだけ。
確認と実行
どう書き変わるのかを確認する
ncu
コマンドだけだと、変更前と変更後のリストが表示されるだけで、package.json
はまだ書き替わらないので安心。
$ ncu express 4.12.x → 4.13.x multer ^0.1.8 → ^1.0.1 react-bootstrap ^0.22.6 → ^0.24.0 react-a11y ^0.1.1 → ^0.2.6 webpack ~1.9.10 → ~1.10.5
実際に書き変える
-u
オプションをつけることで、実際にpackage.json
が書き変えられる。
$ ncu -u
npmを個別に指定
特定のnpmのみをバージョンアップしたい場合は、対象のnpmの名前を指定するだけ。
$ ncu express, webpack
npmの名前の指定には、正規表現も使えて便利。
$ ncu '/^(?!gulp-).*$/'
バージョンを細かく指定
メジャーバージョンも含めて最新にする
デフォルトではメジャーバージョンも含めて最新になります。
$ ncu gulp-eslint 2.0.0 → 3.0.1
メジャーバージョンは固定、それ以下を最新に
--semverLevel major
オプションをつけることで、メジャーバージョンは固定で、それ以下を最新にできます。
メジャーバージョンアップをして、既存のコードが動かなくなるのを避けたい場合などに。
$ ncu --semverLevel major gulp-eslint 2.0.0 → 2.1.0
マイナーバージョンまで固定、それ以下を最新に
--semverLevel minor
オプションをつけることで、マイナーバージョンまでを固定して、それ以下を最新にできます。
$ ncu --semverLevel minor gulp-eslint 2.0.0 → 2.0.1
気の利くところ
既存のpackage.json
の記法を尊重して、アップデート後も同じように書き変えてくれて気が効くなと思いました。やさしさ。
$ ncu 1.2 → 1.3 0.1.0 → 0.2.1 ^1.2.0 → ^2.0.0 1.x → 2.x