セマンティックバージョンの比較
2つのバージョンの大小と、^1.2.3 のような範囲指定にどこまで当たるかを確かめます。
2つを比べる
2つのバージョンを入れると、どちらが新しいか判定します。
- 新しいほう —
- 違いの大きさ —
- Aの内訳 —
- Bの内訳 —
範囲に当てはまるか
- 範囲の意味 —
- バージョンA —
- バージョンB —
この処理はブラウザ内で完結します。入力内容が dounika.site のサーバへ送信されることはありません。
補足
- ^ は左端の0でない数字を変えない範囲です。^1.2.3 は 1.2.3 以上 2.0.0 未満、^0.2.3 は 0.2.3 以上 0.3.0 未満になります。
- ~ は原則としてパッチ版までです。~1.2.3 は 1.2.3 以上 1.3.0 未満、~1.2 も同じ範囲、~1 は 1.0.0 以上 2.0.0 未満です。
- プレリリース付き(1.0.0-beta.1)は、同じ数字の正式版より必ず古いものとして扱います。プレリリース同士は識別子を左から比べ、数字だけの識別子は数として比較します。
- プレリリース版は、範囲の側に同じ数字のプレリリースが書かれていない限り当てはまりません。npm(node-semver)と同じ規則です。
- +build の部分は比較に使いません。1.0.0+a と 1.0.0+b は同じ大きさとして扱います。
- || でつないだ複数指定、1.2.x のようなx表記、1.2.3 - 2.3.4 のようなハイフン範囲にも対応します。
よくある質問
^1.2.3 はどこまで上がりますか?
2.0.0 未満までです。^ は「左端の0でない数字を変えない範囲」を意味し、^1.2.3 は 1.2.3 以上 2.0.0 未満になります。0.x の場合は意味が変わり、^0.2.3 は 0.2.3 以上 0.3.0 未満です。範囲を入れると、実際の下限と上限を表示します。
^ と ~ の違いは何ですか?
~ のほうが狭く、原則としてパッチ版だけを許します。~1.2.3 は 1.2.3 以上 1.3.0 未満、^1.2.3 は 1.2.3 以上 2.0.0 未満です。マイナー版を省いた ~1 は 1.0.0 以上 2.0.0 未満になります。
1.0.0-beta.1 と 1.0.0 はどちらが新しいですか?
1.0.0 です。プレリリース付きは、同じ数字の正式版より必ず古いものとして扱います。プレリリース同士は識別子を左から比べ、数字だけの識別子は数値として、それ以外は文字列として比較します(1.0.0-alpha.2 は 1.0.0-alpha.10 より古い)。
プレリリース版は ^1.0.0 の範囲に含まれますか?
含まれません。1.2.0-beta.1 は ^1.0.0 を満たさない、というのがnpmと同じ扱いです。範囲の側にも同じmajor.minor.patchのプレリリースが書かれているとき(^1.2.0-beta.1 など)だけ、その範囲のプレリリースが対象になります。
+build のようなビルドメタデータは比較に影響しますか?
影響しません。1.0.0+20240101 と 1.0.0+20240202 は同じ大きさとして扱います(semver 2.0.0の規定)。表示上は入力どおり残しますが、大小の判定では無視します。
1.2 のように途中まで書いた指定も読めますか?
読めます。1.2 は 1.2.0 以上 1.3.0 未満、1 は 1.0.0 以上 2.0.0 未満として扱います。1.2.x や 1.x のようなx表記、1.2.3 - 2.3.4 のようなハイフン範囲、|| でつないだ複数指定にも対応します。