SemVer パーサーと範囲テスター

完全なバージョンと範囲を入力すると、一致するかどうかを確認できます。範囲は完全一致(1.2.3)、比較(>=1.2.3)、開いた指定(1.x)、ハイフン(1.2.3 - 2.0.0)、または代替(^1.2.3 || ~2.0.0)で書けます。

ブラウザ内でローカルに実行
このツールの処理はすべてブラウザ内で行われます。KivTools が入力内容をアップロード・保存したり、外部 API に送信したりすることはありません。
バージョンと範囲完全一致バージョン、比較演算子、キャレット範囲、チルダ範囲、|| の選択肢に対応しています。

バージョンを読み取り、範囲をテストする方法

バージョンと範囲を入力して「バージョンを検査」を押すと、2.4.1-beta.2+build.19 がメジャー・マイナー・パッチ・プレリリース・ビルドメタデータに分解され、その範囲が判定されます。処理はすべてこのブラウザ内で完結し、レジストリへの問い合わせもパッケージのインストールも行いません。

判定は npm の semver(すべてのパッケージマネージャーが使う実装)に合わせています。npm がそのバージョンをインストールする範囲が、ここで一致する範囲です。プレリリースを名指ししない範囲にプレリリースを通さない規則も同じです。ページが読み取れない範囲は、推測せずに例を示して拒否します。

  1. 2.4.1、1.0.0-rc.1、2.4.1-beta.2+build.19 のような 3 部構成の完全なバージョンを入力します。部が欠けたもの、先頭に 0 があるもの、9007199254740991 を超える数値フィールドは、npm と同様に受け付けません。
  2. 2 番目の欄に範囲を入力します。完全一致バージョン、比較演算子(>、>=、<、<=、=)、キャレット、チルダ(~> も可)、1.x や 1.2.x のような開いた範囲、1.2.3 - 2.0.0 のようなハイフン範囲、またはこれらを空白か || で組み合わせたものです。
  3. 範囲を空のままにするとバージョンのレポートだけを確認できます。「サンプルを読み込む」を押すと、プレリリース 2.4.1-beta.2+build.19 を ^2.4.0 || ~3.1.0 に対してテストします。
  4. 範囲の行とその下の注記を読みます。プレリリースが一致しない理由が「範囲側に同じ major.minor.patch のプレリリースがないこと」だけの場合、ページは「一致しません」だけでなくその理由を表示します。
  5. レポートをコピーまたはダウンロードし、「クリア」で両方の欄を空にします。

範囲の文法、npm のプレリリース規則、このページの限界

範囲の文法が扱うもの

1.2.3 と v1.2.3 は 1 つのリリースを指します。>、>=、<、<=、= はそれを基準に比較し、演算子の後の空白も認めます(>= 1.2.3)。同じ欄の 2 つの比較子は両方を満たす必要があり(>=1.2.3 <2.0.0)、|| はいずれか一方を満たせば成立します。^1.2.3 は 1.2.3 から 2.0.0 まで、~1.2.3 は 1.2.3 から 1.3.0 までを受け付けます。部を省略した書き方は区間になり、1.2 は 1.2.0 から 1.3.0 まで、1.x は 1.0.0 から 2.0.0 まで、* はプレリリースを含まないすべてのバージョンを受け付けます。

プレリリースとビルドメタデータ

プレリリース付きのバージョンは、範囲側が同じ major.minor.patch のプレリリースを名指ししている場合にのみ一致します。^2.4.0 は 2.4.1-beta.2 に一致せず、^2.4.0-beta.1 は 2.4.0-beta.2 に一致し、* は 1.2.3-beta にまったく一致しません。比較ではビルドメタデータを無視するため、2.4.1+build.19 は 2.4.1 に一致します。プレリリース識別子の先頭に 0 は使えず(1.2.3-01 は無効)、適用されるのは npm と同じ規則です。

このページでできないこと

レジストリを参照しないため、あるパッケージが公開したバージョン、バージョンの存在、npm が実際にインストールするものは分かりません。latest のような dist-tag は範囲ではないので、推測せずその旨を返します。判定の対象は入力した 1 つのバージョンだけで、取得・保存・送信は行いません。

最近使ったツール: