SemVer範囲計算機
開発者API & パッケージユーティリティ

SemVer 範囲&バージョン適合性計算機

セマンティック バージョニング(SemVer)範囲(キャレット ^、チルダ ~、ハイフン範囲、X-Range、プレリリース)をテストし、パッケージバージョンの適合性をリアルタイムに検証します。

100% クライアント側プライバシー
サーバー送信ゼロ
プリセット:
SemVer範囲と候補入力
Normalized:>=18.2.0 <19.0.0-0 || >=19.0.0 <20.0.0-0
適合率
50%(4 / 8 件適合)
最小適合バージョン
v18.2.0
最大適合バージョン
v19.0.1
判定検証バージョン評価結果・理由
適合18.2.0Satisfies clause #1 (^18.2.0): [18.2.0, 19.0.0)
適合18.3.1Satisfies clause #1 (^18.2.0): [18.2.0, 19.0.0)
適合19.0.0Satisfies clause #2 (^19.0.0): [19.0.0, 20.0.0)
適合19.0.1Satisfies clause #2 (^19.0.0): [19.0.0, 20.0.0)
不適合19.1.0-canary.1preDoes not satisfy any clause in the range expression.
不適合18.1.9Does not satisfy any clause in the range expression.
不適合20.0.0Does not satisfy any clause in the range expression.
不適合17.0.2Does not satisfy any clause in the range expression.

純粋クライアントサイド SemVer 2.0 エンジン

外部通信を一切行わず、公式 npm および SemVer 2.0 仕様に厳密準拠した高速・決定論的な判定を実施します。

完全非公開・ゼロ送信プライバシー

機密性の高い依存関係リストや内部パッケージ名、リリースタグがブラウザ外へ送信されることは一切ありません。

全域のバージョン範囲構文を網羅

キャレット (^)、チルダ (~)、ハイフン範囲 (-)、X範囲 (*, 1.x)、論理 OR (||)、プレリリース分離規則を完全サポート。

技術リファレンス&アーキテクチャガイド

SemVer範囲・バージョン適合性テスター — リファレンスガイド

セマンティック バージョニング(SemVer)範囲(キャレット ^、チルダ ~、ハイフン範囲、X-Range、プレリリース)をテストし、パッケージバージョンの適合性をリアルタイムに検証します。

主要パラメータ&設定項目

範囲式 (Range Expression)String

比較演算子(>=, <)、キャレット(^)、チルダ(~)、ワイルドカード(1.x, *)、ハイフン範囲(1.0.0 - 2.0.0)、OR結合(||)をサポートするSemVerクエリ。

初期値: ^1.2.3 || ~2.0.0
対象バージョン (Target Version)String

範囲式に対して評価する候補バージョン文字列。プレリリース識別子やビルドメタデータに対応。

初期値: 1.4.0
プレリリースを含める (Include Pre-releases)Boolean

有効にすると、比較演算子でプレリリースタグが明示されていない場合でも、プレリリースバージョン(例: 1.3.0-rc.1)の一致を許容します。

初期値: false
緩格モード (Loose Mode)Boolean

非正規バージョンの緩やかな解析を有効にし、先頭の 'v' 接頭辞やパッチ番号の省略(例: 1.2)、空白の揺らぎを許容します。

初期値: false

プロの活用テクニック&推奨設定

SemVer 2.0.0 および npm s

SemVer 2.0.0 および npm semver 仕様では、^0.2.3 は >=0.2.3 <0.3.0 に制限されます。これは 1.0.0 未満ではマイナー単位で破壊的変更が許容されるためです。^0.0.3 の場合は厳密に 0.0.3 のみに固定されます。

プレリリース識別子の境界分離ルール

プレリリース識別子を含むバージョン(例: 1.2.3-alpha.1)は、範囲式内の比較タプルが同一の [major, minor, patch] を明示していない限り、>=1.0.0 のような標準範囲には適合しません。

ハイフン範囲での空白文字(スペース)の必須性

ハイフン範囲には前後に半角スペースが必要です(例: '1.2.3 - 2.0.0')。空白を省いて '1.2.3-2.0.0' と記述すると、パーサーは '-2.0.0' をバージョン 1.2.3 に対するプレリリースタグとして解釈します。

ビルドメタデータ(+build)の優先順位不変性

SemVer 2.0.0 仕様第10項に基づき、ビルドメタデータ(例: +build.2024 や +sha.c0ffee)はバージョンの優先順位比較において完全に無視されます。1.0.0+1 と 1.0.0+999 は同等の適合性を持ちます。

よくあるトラブルと解決策

プレリリースバージョンが広範な範囲(例: >=1.0.0 に対する 2.0.0-rc.1)に適合しない

SemVer では本番環境での予期せぬ不具合を防ぐため、プレリリース版を通常範囲から意図的に隔離しています。「プレリリースを含める」オプションを有効にするか、'>=1.0.0 || >=2.0.0-0' のように明示的なプレリリース範囲を指定してください。

接頭辞 'v' 付きのバージョン(例: 'v1.4.2')で解析エラーが発生する

公式の SemVer 2.0.0 仕様では先頭の 'v' は無効です。「緩格モード(Loose Mode)」を有効にするか、評価前に semver.clean() 等で接頭辞を除去して正規化してください。

チルダ(~)とキャレット(^)の更新差分による予期せぬ依存関係のズレ

~1.2.3 はパッチリリース(<1.3.0)のみを許可しますが、^1.2.3 は後方互換性のあるマイナー更新(<2.0.0)まで取り込みます。ロックファイルを使用しない環境で完全な再現性が必要な場合は、厳密な完全一致(1.2.3)を指定してください。

よくある質問 (FAQ)

キャレット(^)とチルダ(~)の最も決定的な違いは何ですか?▼

キャレット(^)は、[major, minor, patch] タプルの中で最も左にあるゼロ以外の数字を変更しない更新を許可します。例えば ^1.2.3 は >=1.2.3 <2.0.0 を許容し、^0.2.3 は >=0.2.3 <0.3.0 を許容します。チルダ(~)はマイナーバージョンが指定されている場合、パッチ単位の更新のみを許可します(例: ~1.2.3 は >=1.2.3 <1.3.0、~1.2 は >=1.2.0 <1.3.0)。

なぜ '>=1.0.0 <3.0.0' の範囲が '2.0.0-beta.1' を拒否するのですか?▼

npm semver 仕様では、範囲内に同一の [major, minor, patch] バージョンタプルを持つ比較演算子が含まれていない限り、プレリリース版は範囲を満たしません。1.0.0 や 3.0.0 のタプルは 2.0.0 と一致しないため、自動デプロイが不安定なビルドを取り込むのを防ぐ目的で除外されます。

プレリリース識別子の優先順位はどのように比較されますか?▼

プレリリース識別子はドット区切りで分割され、左から右へ順に比較されます。数字のみの識別子は数値として、英数字を含む識別子はASCII辞書順で比較されます。数値識別子は非数値識別子よりも常に優先順位が低くなります(例: 1.0.0-1 < 1.0.0-alpha < 1.0.0-beta < 1.0.0)。

ワイルドカードや X-Range(例: '1.2.x', '1.*')はどのように展開されますか?▼

X-Range では 'x'、'X'、'*' が省略されたセグメントのワイルドカードとして機能します。'1.x' または '1.*' は '>=1.0.0 <2.0.0-0' に展開され、'1.2.x' または '1.2.*' は '>=1.2.0 <1.3.0-0' に展開されます。空文字列または '*' は有効なすべての SemVer(>=0.0.0)に一致します。

ビルドメタデータ(+exp.sha)はパッケージの範囲一致判定に影響しますか?▼

影響しません。SemVer 2.0.0 仕様第10項に基づき、ビルドメタデータは優先順位の評価時に無視されます。1.0.0+build1 と 1.0.0+build2 のようにビルドメタデータのみが異なる2つのバージョンは、完全に同一の範囲を満たします。

関連するおすすめ開発ツール

すべてのツール →