使い方
- バージョンに1.4.0のようなバージョンを入力します。必要なら、比べる相手を比較する相手に入力します。
- 番号を上げるを選ぶと、次のバージョンが分かります。プレリリースの番号上げでは、プレリリースの名前に名前を入力します。
- 範囲を入力すると、バージョンが当てはまるかを確認できます。範囲の読み方を読むと、範囲の各部分の意味が分かります。
- 求める答えに応じて、番号を上げた後のバージョン、順序、範囲の確認を読みます。
バージョンの順序
SemVer 2.0.0は、メジャー、マイナー、パッチの番号を数として比べます。プレリリースのタグが付いたバージョンは、タグのない同じバージョンより前に来ます。プレリリースの識別子は1つずつ比べられます。数字は数として、文字は ASCII の順で比べ、数字は文字より前に来ます。+ の後のビルドメタデータは、順序に数えません。
- 仕様書の例の順序は次のとおりです:1.0.0-alpha、1.0.0-alpha.1、1.0.0-alpha.beta、1.0.0-beta、1.0.0-beta.2、1.0.0-beta.11、1.0.0-rc.1、1.0.0。
- v1.4.0のように先頭に v が付いていても受け付けますが、v はバージョンの一部とは見なしません。
番号の上げ方
メジャーの番号上げは、最初の数字を1つ上げ、残りの2つを0にします。マイナーとパッチも、それぞれの部分について同じことをします。まだプレリリースのバージョンは、番号上げによって正式版になる場合、タグを失います。node-semver と同じく、1.0.0-alpha はメジャーの番号上げで1.0.0になります。プレリリースの番号上げでは、指定した名前で次のパッチを始めるか(例:1.4.1-beta.0)、既存のプレリリースの末尾の数字を増やします(例:beta.1から beta.2)。
範囲の読み方
範囲の書き方は、npm が使う node-semver に従い、その README の文法 に従います。各形式は比較の条件を表します。^1.3.0は >=1.3.0 <2.0.0-0を、~1.2.3は >=1.2.3 <1.3.0-0を、1.2.x は >=1.2.0 <1.3.0-0を意味します。1つの組の中の比較は、すべて成り立たなければなりません。|| で結ばれた組は代わりの候補になり、空の組は、* と同じく任意のバージョンを受け付けます。
プレリリースと範囲
1.5.0-beta.1のようなプレリリースのバージョンは、その組の比較の1つが同じ1.5.0をプレリリースのタグ付きで指定している場合にだけ、範囲に当てはまります。そのため、未完成のバージョンは既定で範囲の外に置かれます。これは node-semver の README が説明しているとおりで、このページの確認もこの規則に従います。
例:1.4.0をマイナーで上げ、^1.3.0 || 2.x と照合
バージョン1.4.0は1.4.0-beta.2より高くなります。正式版はそのプレリリースより高いためです。マイナーの番号上げで1.5.0になります。範囲 ^1.3.0 || 2.x は、>=1.3.0 <2.0.0-0または >=2.0.0 <3.0.0-0と読み、1.4.0は最初の組に当てはまります。
| 入力 | 結果 |
|---|---|
| 1.4.0と1.4.0-beta.2の比較 | 1.4.0は1.4.0-beta.2より高いです。 |
| 1.4.0のマイナーの番号上げ | 1.5.0 |
| 1.4.0と ^1.3.0 || 2.x の照合 | 1.4.0は ^1.3.0 || 2.x に当てはまります。 |
よくある質問
1.0.0+build.1は1.0.0と同じバージョンですか?
順序と範囲の確認では、同じ扱いになります。SemVer の優先順位では、+ の後のビルドメタデータは数えないため、2つは順序の中で同じ位置にあります。ページはビルドの部分も表示するため、確認できます。
なぜ1.4.0-beta.2は1.4.0より低いのですか?
プレリリースは安定しておらず、その番号が約束する互換性を満たさない場合があるため、SemVer は同じ番号の正式版より前に置きます。そのため、1.4.0-beta.2は1.4.0より前に、1.4.0は1.4.1より前に来ます。
^1.3.0は2.0.0を受け付けますか?
いいえ。キャレットの範囲は、左から最初の0以外の数字を固定するため、^1.3.0は1.3.0以上、2.0.0未満を意味します。例のように2つ目のメジャーも受け付けたい場合は、|| 2.x も書いてください。
~1.2と ^1.2の違いは何ですか?
チルダの範囲 ~1.2は >=1.2.0 <1.3.0-0を意味するため、1.2.9のようなパッチの変更は受け付けますが、1.3.0は拒否します。キャレットの範囲 ^1.2は >=1.2.0 <2.0.0-0を意味するため、1.3.0と1.9.9も受け付けますが、2.0.0は受け付けません。
範囲が1.5.0-beta.1を拒否するのはなぜですか?
プレリリースは、>=1.5.0-beta.0のように、同じバージョンをプレリリースのタグ付きで指定する比較がない限り、範囲から外されます。プレリリースは速く変わり、問題を起こすことがあるため、node-semver はこの選択をしています。
入力したバージョンはサーバーに送られますか?
いいえ。バージョン、範囲、比較は、お使いのブラウザの中で読まれ、確認されます。入力した内容が保存されることはありません。
出典
- Semantic Versioning 2.0.0、仕様書(英語)
- node-semver の README:範囲と範囲の文法(npm)(英語)
- node-semver の README:プレリリースのタグ(npm)(英語)
- node-semver のリポジトリ、ISC ライセンス(npm)(英語)
数値と文章の最終確認日:2026年11月10日火曜日。