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 というツールでオンラインで検証できます。