本文へスキップ

セマンティックバージョンの範囲確認

Semver Range Tester

どのバージョンが範囲に入るかを確かめ、2つのバージョンを比べ、一覧を優先順位どおりに並べます。

セマンティックバージョニングについて人が実際に知りたい2つのことに答えます。このバージョンはこの範囲に入るのか、そしてこの一覧のうちnpmが入れるのはどれか、です。2つのバージョンを優先順位で比べ、`npm version`のそれぞれの種類がどんな値を作るのかも示します。

🔒 ブラウザの中だけで動きますsemverversionnpm

範囲

この範囲が指すもの:1.0.0 以上、2.0.0 未満

npm の範囲文法です。`^` `~` `x` `-` `||` と比較演算子を使います。semver.org にこの文法はありません。あちらが定めるのはバージョンの書式と順序だけです。

バージョン一覧

1 行に 1 つ、またはカンマ区切りで。

どれが当てはまるか

プレリリース
  1. —1.0.0-alpha
  2. —1.0.0-alpha.1
  3. —1.0.0-alpha.beta
  4. —1.0.0-beta
  5. —1.0.0-beta.2
  6. —1.0.0-beta.11
  7. —1.0.0-rc.1
  8. 該当1.0.0
  9. 該当1.2.0これが入ります
  10. —2.0.0-rc.1
  11. —2.0.0
  12. —2.1.3

二つを比べる

順序

1.0.0-beta.11 のほうが高い

違い

prerelease

優先順位は semver.org の第 11 節のとおりです。ビルドメタデータも含めて — つまり無視して — 比べます。

次のバージョン

リリースの種類ごとに出てくるバージョン。
major2.0.0
minor1.3.0
patch1.2.4
premajor2.0.0-alpha.0
preminor1.3.0-alpha.0
prepatch1.2.4-alpha.0
prerelease1.2.4-alpha.0

`npm version <種類>` が作る値です。

みんなが一度は驚く規則があります。プレリリースは、範囲そのものが同じ major.minor.patch のプレリリースに触れているときだけ、その範囲に入ります。ですから ^1.0.0 は 2.0.0-beta.1 に当てはまらず、rc タグが誤って入ってくることもありません。

使い方

  1. 範囲を書きます

    `^1.0.0`、`~1.2.3`、`>=1.2.7 <1.3.0`、`1.2.3 - 2.3.4`、そして`||`がすべて使えます。それが何に当てはまるのかを言葉で説明したものが、下に出ます。

  2. 手元のバージョンを貼り付けます

    1行に1つ、あるいはカンマ区切りです。`npm view <パッケージ> versions`の出力をそのまま貼り付けられます。それぞれ当てはまるかどうかが印で示され、npmが入れるものにラベルが付きます。

  3. 2つを比べるか、次のリリースを計画します

    比較のパネルはsemver.orgの第11節をそのまま守ります。上げ方の表は、ある出発点から`npm version major`や`preminor`などが何を作るのかを示します。

よくある質問

`^1.0.0`が`2.0.0-beta.1`に当てはまらないのはなぜですか

理由が2つ重なっています。`^1`はメジャー2に届きませんし、それとは別に、プレリリースは同じmajor.minor.patchのプレリリースを範囲自身が名指ししているときにしか、その範囲に入りません。2つ目の規則のおかげで、`rc`のタグがうっかり入ることがありません。

`^0.2.3`の動きが違うのはなぜですか

1.0.0より下では、キャレットがマイナーまで締まります。`^0.2.3`は0.2.xを許しますが、0.3.0は許しません。0.xのプロジェクトはマイナーごとに壊れるものと見なされるからです。semver.orgではなくnpmの規則で、毎回みなを驚かせます。

`1.0.0+build.1`と`1.0.0`は違いますか

文字列は違いますが、優先順位は同じです。第10節が、比較のときにビルドメタデータを無視すると定めています。つまりビルドメタデータだけが違うバージョンの並べ替えは安定しませんし、その2つのあいだに順序を付けることもできません。

範囲の書き方もsemverの一部ですか

違います。semver.orgが定めるのは、バージョンの形式と、2つのバージョンの比べ方までです。`^`、`~`、`x`、`||`はnpmの範囲の文法で、ほかの生態系はそれを借りるか、別のものを使っています。Cargo、Composer、pipは細部でそれぞれ違います。

ここから渡せます

次の一手

このツールが出したものをそのまま受け取れる道具です。