ツール

Semver 範囲チェッカー

^1.2.0 や ~2.3 のような範囲がどのバージョンを受け入れるかを、npm 自身が使う node-semver で確認できます。プレリリースにも対応します。

ブラウザ内で実行コード変換5466
無料

入力

0 B

結果

結果はここに表示されます。

^1.2.0 が 1.10.0-beta.1 を受け入れるかどうか、^0.2.3 で何が許されるかは、勘違いしやすく、試すのも面倒です。バージョンの一覧と範囲を貼り付けると、このツールは npm 自身が依存関係の解決に使うライブラリ node-semver で、各バージョンが受け入れられるか拒否されるかを示します。さらに、バージョンを正しく並べ替え(1.10.0 は 1.2.0 の後、プレリリースはそのリリースの前)、範囲を完全に展開した形で表示し、範囲を満たす最高と最低のバージョンも示します。

動作のしくみ

  • バージョンはカンマ、スペース、改行で区切れます。latest のように有効なバージョンでないものは、黙って無視されるのではなく、別に一覧表示されます。
  • 範囲は展開した形で表示されます。^1.2.0 は >=1.2.0 <2.0.0-0 で、node-semver が実際に比較に使うのはこの形です。
  • npm と同様に、許可しない限りプレリリースは除外されます。デフォルトでは ^1.2.0 は 1.10.0-beta.1 を受け入れません。
  • 最も高いバージョンの次のパッチ、マイナー、メジャー、rc プレリリースを算出し、バージョンがちょうど 2 つの場合はその差(major、minor、patch…)を表示します。

データの行き先

どこにも行きません。このツールは完全にブラウザ内で動作します。貼り付けたテキストはページが処理し、サーバーに送信されることも、ログに記録されることもありません。

このツールは無料で登録不要です。結果は開いているページの中にだけあり、どこにも保存されません。

必要なポイント

このツールは無料です。ログインもポイントも必要ありません。

よくある質問

^ と ~ の違いは何ですか?
^ は、左端の 0 でない数字を変えない範囲をすべて許可します。^1.2.3 は 2.0.0 未満まで受け入れます。~ はマイナーバージョンが指定されている場合、パッチの更新だけを許可します。~1.2.3 は 1.3.0 未満まで受け入れます。npm はデフォルトで package.json に ^ を書き込みます。
^0.2.3 が 0.3.0 を受け入れないのはなぜですか?
0.x のバージョンでは、マイナー番号が破壊的変更を示すものとして扱われるからです。1.0.0 より前はセマンティックバージョニングが安定性を約束しないため、^0.2.3 は >=0.2.3 <0.3.0 を意味します。同様に、^0.0.3 は 0.0.3 そのものしか受け入れません。
1.10.0-beta.1 が ^1.2.0 に拒否されるのはなぜですか?
npm は、範囲自体が同じ major.minor.patch のプレリリースを指定していない限り、プレリリースを範囲から除外します。これにより、ベータ版が誤ってインストールされるのを防ぎます。「プレリリースを含める」をオンにすると、許可した場合に範囲が何を受け入れるかを確認できます。これは npm の --include-prerelease と同じ挙動です。
loose モードは何をしますか?
=1.2.3beta のように、厳密な semver では拒否される雑なバージョンを受け入れ、どう解釈したかを表示します。この場合は 1.2.3-beta です。古いパッケージや一部のタグはこうしたバージョンを使っています。strict モードは仕様が認める形式です。

背後にあるオープンソース

このツールは npm/node-semver(ISC)の上で動作しています。同じ処理を自分のプログラムに組み込みたい場合は、そのライブラリを使ってください。

npm/node-semver

別の呼び方

  • semver 範囲 確認
  • semver チェッカー
  • npm バージョン 範囲
  • キャレット チルダ 違い
  • semver satisfies
  • セマンティックバージョニング 計算