読者です 読者をやめる 読者になる 読者になる

tacamy.blog

JavaScriptを勉強中の人のブログです。

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