2つのSemverバージョンを比較 — どちらが新しいか?
2つのセマンティックバージョンを比較してどちらが新しいか判定します。メジャー、マイナー、パッチ、プレリリースコンポーネントの比較アルゴリズムを解説。
Version Comparison
詳細な説明
2つのSemverバージョンの比較
バージョン比較は単純な問いに答えます:2つのバージョンが与えられた場合、どちらが新しいか? SemVer仕様はこのための正確なアルゴリズムを定義しています。
比較アルゴリズム
バージョンはコンポーネントごとに左から右に比較されます:
- MAJORを比較 — 大きいMAJORが勝ち
- MAJORが等しい場合、MINORを比較 — 大きいMINORが勝ち
- MINORが等しい場合、PATCHを比較 — 大きいPATCHが勝ち
- PATCHが等しい場合、プレリリース識別子を比較
- ビルドメタデータは常に無視
例
| バージョンA | バージョンB | 結果 | 決定要因 |
|---|---|---|---|
2.0.0 |
1.9.9 |
A > B | MAJOR: 2 > 1 |
1.3.0 |
1.2.9 |
A > B | MINOR: 3 > 2 |
1.2.3 |
1.2.3-alpha |
A > B | リリース > プレリリース |
1.2.3+build.1 |
1.2.3+build.2 |
A = B | ビルドメタデータは無視 |
プレリリースの比較
両方のバージョンがプレリリース識別子を持ち、同じMAJOR.MINOR.PATCHの場合:
- プレリリースをドットでトークンに分割
- トークンを左から右に比較
- 数値トークンは整数として比較(
2 < 11) - 文字列トークンは辞書順で比較(
"alpha" < "beta") - 数値トークンは文字列トークンより優先度が低い
Compareタブの使用
Compareタブに2つのバージョンを入力すると即座に確認できます:
- どちらのバージョンが新しいか
- コンポーネントごとの内訳
- メジャー、マイナー、パッチの差分
ユースケース
利用可能なアップデートが現在インストールされているバージョンより新しいかの判定、バージョン対応のデプロイメントパイプラインの構築、チェンジログやダッシュボードでのリリースリストのソート。