セマンティックバージョン比較・範囲判定ツール
semver(セマンティックバージョニング)のバージョン2つの大小比較と、npmのpackage.jsonで使う範囲式(^1.2.3、~1.2、>=1.0.0 <2.0.0、1.x、1.2.3 - 2.0.0、||)にバージョンが適合するかを判定します。複数のバージョンを貼り付けて、適合判定と昇順・降順の並べ替えもできます。npm(node-semver)の仕様に沿って判定し、処理はすべてブラウザ内で完結します。入力内容がサーバーに送信されることはありません。
🔒 ブラウザ内で完結・入力データはサーバーに送信されません
バージョンの比較
範囲式の判定
| 入力 | 正規化 | 判定 |
|---|
注意事項
- 範囲式の判定はnpmのnode-semverの標準(strict)モードに沿っています。"1.2" のような短い表記はバージョン一覧には使えず、範囲式の中でのみ使えます。
- プレリリース付きのバージョン(例: 1.3.0-beta.1)は、範囲式に同じ「メジャー.マイナー.パッチ」のプレリリース付き条件(例: ^1.3.0-beta.0)がない限り、既定では適合しません。含めたい場合は「プレリリースも対象に含める」を選んでください。
- +以降のビルドメタデータ(例: 1.0.0+build.5)は、比較・範囲判定では無視されます。
- Python(PEP 440)やRubyGemsなど、semver以外のバージョン規則は対象外です。
用語解説
セマンティックバージョニング(semver)
「メジャー.マイナー.パッチ」の3つの数字でバージョンを表す規約です。互換性を壊す変更でメジャー、後方互換の機能追加でマイナー、バグ修正でパッチを上げます。
^(キャレット)範囲
一番左の0でない桁を固定し、それより右を自由に上げてよい範囲です。^1.2.3 は >=1.2.3 <2.0.0、^0.2.3 は >=0.2.3 <0.3.0、^0.0.3 は 0.0.3 のみに適合します。
~(チルダ)範囲
マイナーまで指定されていればパッチだけ、マイナーが省略されていればマイナーとパッチを上げてよい範囲です。~1.2.3 は >=1.2.3 <1.3.0、~1 は >=1.0.0 <2.0.0 と同じです。
プレリリース(-beta.1 など)
ハイフンの後ろに付く先行版の識別子です。同じ番号の正式版より小さく、識別子はドット区切りで左から順に比較し、数字は数値として、英数字は文字列として比較します(数字の方が英数字より小さい)。
よくある質問
^1.2.3 と ~1.2.3 の違いは何ですか?
^1.2.3 は >=1.2.3 <2.0.0(マイナーとパッチの更新を許可)、~1.2.3 は >=1.2.3 <1.3.0(パッチの更新だけ許可)です。ただし ^0.2.3 は >=0.2.3 <0.3.0、^0.0.3 は 0.0.3 のみというように、0 で始まるバージョンの ^ は範囲がより狭くなります。
^1.0.0 の範囲に 1.5.0-beta.1 が適合しないのはなぜですか?
npmの仕様では、プレリリース付きバージョンは、範囲式に同じ「メジャー.マイナー.パッチ」でプレリリース付きの条件(例: ^1.5.0-alpha)がない限り適合しません。意図しない先行版の混入を防ぐためです。このツールでは「プレリリースも対象に含める」を選ぶと適合扱いにできます。
1.0.0-beta.2 と 1.0.0-beta.11 はどちらが新しいですか?
beta.11 の方が新しいです。プレリリースの識別子はドットで区切って左から比較し、数字だけの識別子は数値として比べます(2 < 11)。英数字を含む識別子は文字列として比較し、数字のみの識別子は英数字より小さくなります。
1.0.0+build.1 と 1.0.0+build.2 は区別されますか?
区別されません。+ 以降のビルドメタデータは優先順位の比較に使われないため、2つは同じ順位として扱われます。
"1.2" や "1" のようなバージョンも比較できますか?
バージョン同士の比較では、X.Y.Z の3つの数字が揃った形式のみ受け付けます。"1.2" や "1.x" は範囲式としてなら使え、"1.2" は >=1.2.0 <1.3.0 に展開されます。
このページをシェア
