Semver計算・比較
バージョン番号(1.2.3)がSemantic Versioningとして正しいか検証し、次のmajor/minor/patchを計算します。2つのバージョンの大小比較にも対応しています。
バージョンを入力してください。
このツールでできること
Semver計算・比較にまつわる主な機能です。
- バージョン番号がSemantic Versioningとして正しいか検証できます
- 次のmajor/minor/patchを同時に計算できます
- 2つのバージョンの大小を、仕様どおりの規則で比較できます(文字列比較ではありません)
- プレリリース版(1.2.3-alpha.1等)を正しく扱えます
- ビルドメタデータ(+build.5等)を正しく扱えます
- 安全な整数の範囲を超える大きな数値のバージョンでも正しく計算・比較できます
手順を見る
- 「計算」または「比較」を選びます
- バージョン番号を入力します計算は1つ、比較は2つ入力します
- 結果を確認します入力するとリアルタイムに表示されます
こんなときに使えます
こんな場面でSemver計算・比較が役立ちます。
利用シーンを見る
- リリース作業で、次のバージョン番号を確認したいとき
- Gitタグを作る前に、バージョン番号が正しい形式か確認したいとき
- 2つのバージョンのどちらが新しいか、素早く確認したいとき
- プレリリース版を含むバージョンの優先順位を確認したいとき
Semantic Versioningの仕組みと注意点
詳しい解説を見る
MAJOR.MINOR.PATCHの意味
Semantic Versioning(SemVer)では、バージョン番号をMAJOR.MINOR.PATCHの形で表します。MAJORは互換性のない変更、MINORは後方互換性のある機能追加、PATCHは後方互換性のあるバグ修正を表します。本ツールは、Semantic Versioning 2.0.0(semver.org)の仕様に基づいて実装しています。
プレリリース版からの計算
1.2.3-alpha.1のようなプレリリース版から次のバージョンを計算する際の規則は、広く使われているnpmのsemverパッケージの実装に合わせています。例えば、プレリリース付きバージョンのPatchを計算すると、数値を増やさずプレリリースだけを取り除く場合があります。
ビルドメタデータ
+build.5のようなビルドメタデータは、バージョンの優先順位の比較には使われません。ビルドメタデータだけが異なる2つのバージョンは、優先順位は同じですが文字列としては異なります。
本ツールが対応していないもの(Range)
^1.2.3や~1.2.3のような範囲指定(Range)には対応していません。これはSemantic Versioningの仕様そのものではなく、npmが独自に定めた構文のためです。
互換性・バージョンの上げ方は保証しません
「MAJORが同じなら互換性がある」という考え方は仕様上の約束事であり、実際のライブラリがそれを守っている保証はありません。本ツールは、どの要素を上げるべきかの判断は行いません。
大きな数値の比較
JavaScriptの数値型で安全に扱える範囲(253-1)を超える大きな数値のバージョンでも、BigIntを使って正しく比較・計算します。
よくある質問
`^1.2.3`や`~1.2.3`のような範囲指定(Range)に対応していますか?
対応していません。これはSemantic Versioningの仕様そのものではなく、npmが独自に定めた構文のためです。
先頭に`v`をつけて入力できますか?
はい。`v1.2.3`のように入力しても、入力補助として`v`を取り除いてから検証します。`v`は仕様上バージョンの一部ではないため、結果には付きません。
`01.2.3`のような先頭ゼロは、`1.2.3`として扱われますか?
いいえ。先頭ゼロのある数値は、勝手に修正せず不正な形式として扱います。
メジャーバージョンが同じなら、互換性があると保証されますか?
いいえ。これは仕様上の約束事であり、実際のライブラリがそれを守っている保証はありません。本ツールはバージョンの上げ方の判断を行いません。
入力したバージョン番号はサーバーへ送信されますか?
いいえ。計算・比較の処理はすべてブラウザ内で完結しており、入力内容がサーバーへ送信されることはありません。