^1.2.3 って結局どこまで許容されるんだっけ。 package.json に書いたバージョン範囲、このバージョンで本当に一致するのか不安になることはありませんか。 このツールは範囲を「>=A <B」の形に展開してから判定するので、曖昧さが残りません。
使い方
- 上の欄に範囲を入力する(^1.2.3、~1.2、>=1.0.0 <2.0.0、1.x、1.2.3 - 2.3.4 など)。
- 下のテキストエリアに判定したいバージョンを1行ずつ入力する。空行は無視され、複数バージョンをまとめて判定できる。
- 入力するたびに、展開した範囲と各バージョンの一致・不一致が即座に表示される。
仕組み・計算式
node-semver(npmがバージョン判定に使うライブラリ)と同じルールで、キャレット(^)・チルダ(~)・Xレンジ(1.x, *)・ハイフン範囲・OR(||)を「>=A =0.2.3 <0.3.0(マイナーまで固定)、^0.0.3は>=0.0.3 <0.0.4(パッチまで固定)になります。意外だったのは、^0.0.3のような0.0.x系だと、パッチが1つ上がっただけの0.0.4がもう範囲から外れることでした。プレリリース版(1.2.3-beta.1のような-付きバージョン)はsemverの仕様上、範囲側に同じmajor.minor.patchのプレリリース指定がある場合しか一致しません。
現場の落とし穴: ^1.2.3は1.2.3以上2.0.0未満に一致しますが、1.2.3-beta.1のような「同じバージョンのプレリリース」はこの範囲に含まれません。CIで「範囲的には対象のはずなのに落ちる」ときは、まずプレリリースタグの有無を疑ってください。
よくある質問
Q. ~1.2 と ^1.2 の違いは?
A. ~1.2はパッチだけ、^1.2はマイナーまで上げてよい範囲です。試すと、~1.2は>=1.2.0 <1.3.0、^1.2は>=1.2.0 <2.0.0に展開されました。
Q. || で複数の範囲を指定できますか?
A. はい。「^1.0.0 || ^2.0.0」のように書くと、どちらかに一致すれば判定は一致になります。
Q. ハイフン範囲の右側が不完全(1.2 - 2.3)だとどうなりますか?
A. 右側の未指定部分は繰り上がります。1.2 - 2.3は>=1.2.0 <2.4.0として扱われます。
関連ツール
最終更新・根拠の確認日: 2026-09-28 · カテゴリ: 開発・データ