semverの解釈がエコシステムによって異なったりする場合があるので、nodejs(npm)の場合を備忘録メモ。
3桁の数字で表現:x.y.z。
- 最初の桁はメジャーバージョン
- 2桁目はマイナーバージョン
- 3桁目はパッチバージョン
バージョンの上げ方
- 互換性のないAPIを変更する場合、メジャーバージョンをアップ
- 下位互換性のある方法で機能を追加する場合、マイナーバージョンをアップ
- 下位互換性のあるバグ修正を行う場合、パッチバージョンがアップ
バージョン表記の記号
^: 一番左にあるゼロ以外の数値を変更しない^1.2.3=>1.2.3 <= version < 2.0.0^0.13.0=>0.13.0 <= version < 0.14.0- 0.xの場合とそれ以外とでルールが異なるので注意。
~: 一番右のバージョンがあがる~1.2.3=>1.2.3 <= version < 1.3.0~1.2=>1.2.0 <= version < 1.3.0,1.2.xと同じ。~1=>1 <= version < 2,1.xと同じ。
=ピンポイントでそのバージョン=1.2.3=>1.2.3
-レンジ1.2.3 - 1.2.4=>1.2.3 <= version <=1.2.4- 両端とも含みます
.xという表記もできるようだ1.x=>1.0.0 <= version < 2.0.0- https://semver.npmjs.com/
その他
- 記号なしの場合は、ピンポイントでそのバージョン。(
=と同じかな) latest最新のバージョン。(正確にはTag指定で、npmレポジトリにlatestというタグが存在するから)
複数指定
ルールが分かりづらい場合、分解して書いた方が分かりやすい
1.2.3 - 1.2.5>=1.2.3 <1.3.0<1.0.0 || >2.3.4 || >=3.0.0 <4.0.0
確認する方法
npm semver calculator というツールでオンラインで検証できます。