ツール
入力
結果
結果はここに表示されます。^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
- セマンティックバージョニング 計算