Node.jsのプロジェクトではnpm version
コマンドでバージョンをインクリメントできます。package.json, package-lock.jsonの書き換えと、Gitタグの追加が自動化されます。よく使われるmajor
, minor
, patch
の他に、pre*
というプレリリース用のオプションが実装されています。
以下の動作確認はnpm v6.14.5で行いました。
次期バージョンのアルファ版作成
# 1.2.3 => 2.0.0-alpha.0
npm version premajor --preid alpha
premajor
を指定すると、次期メジャーバージョンのプレリリース版となります。このとき--preid
オプションを指定すると任意の接頭辞(この場合はalpha
)が付加されます。接頭辞を指定しなかった場合は2.0.0-0
となりました。
アルファ版の中でのインクリメント
# 2.0.0-alpha.0 => 2.0.0-alpha.1
npm version prerelease
プレリリース部分の番号を上げるには、prerelease
を指定します。この場合は--preid alpha
を指定してもインクリメントされます。ただ--preid
なしの方がbeta.0 => beta.1
やrc.0 => rc.1
のときでも同様に動作するので、ミスが起こりにくそうです。
アルファ版からRC版に格上げする
# 2.0.0-alpha.1 => 2.0.0-rc.0
npm version prerelease --preid rc
2.0.0のプレリリースであることには変わらないのでprerelease
を指定し、--preid
オプションでアルファからRCに変更します。自動的にrc.0
がセットされました。Semverではプレリリース版の接頭辞はアルファベット順に解釈されます。(2.0.0-alpha.1
< 2.0.0-rc.0
< 2.0.0
)
正式版のリリース
# 2.0.0-rc.0 => 2.0.0
npm version major
上記のコマンドで動きましたが、引数はminor
でもpatch
でも同じ結果でした。そもそもバージョン番号は上がってないのでどれもしっくり来ません。明示的にnpm version 2.0.0
を実行してもいい気がします。