SemVer範囲でパッケージ版を確認するチェッカー
パッケージ更新では、指定したセマンティックバージョンがマニフェスト、ロックファイル規則、リリース方針、互換性表に記載された範囲に含まれるかどうかが重要です。このチェッカーはSemVerの優先順位に従って決定的に判定します。比較演算子、空白で結ぶAND条件、ハイフン範囲、ワイルドカード、部分版、二重縦線によるOR条件に対応しています。プレリリース識別子とビルドメタデータも正しい意味で処理するため、単純な数値比較ではなく、依存関係ツールに適した結果を得られます。
無料で実行
確認する版と範囲をご入力ください
<code>2.4.1</code>のような完全なセマンティックバージョンと範囲式をご指定ください。空白で区切った比較条件はすべて満たす必要があり、<code>>=2.0.0 <3.0.0</code>はメジャー版2の安定版を受け入れます。いずれかの分岐でよい場合は、集合を<code>||</code>で区切ります。完全に一致する版も有効な範囲です。結果には、正規化した版、前後の空白を除いた範囲、真偽値、一致した選択肢の1始まり番号が含まれます。ゼロは一致なしを表します。この明示的な形式は、文章を解析せずにデプロイ制御、依存関係レポート、マニフェスト編集画面、テストへ組み込めます。入力を文字列にするのは、版全体を浮動小数点数にすると1.10が1.9より小さいと誤認され、プレリリース情報も失われるためです。完全版の先頭にある<code>v</code>は受け入れて正規化時に除去します。不正な構成要素、空のOR分岐、無効な識別子は、信頼できない偽判定ではなく型付き入力エラーになります。
比較演算子、ハイフン、ワイルドカードを正確にお使いください
使用できる演算子は<code>></code>、<code>>=</code>、<code><</code>、<code><=</code>、<code>=</code>です。同じ選択肢内の複数条件はANDになります。<code>1.2.3 - 2.4.0</code>のようなハイフン式は、完全な両端を含みます。上限が部分版なら、その構成系列の末尾まで展開されます。つまり<code>1.2 - 2.4</code>は1.2.0から始まり、2.5.0の直前で終わります。ワイルドカードには<code>x</code>、<code>X</code>、<code>*</code>を使用できます。<code>3.x</code>は3.0.0以上4.0.0未満の安定版を表し、部分範囲<code>3.2</code>は<code>3.2.x</code>と同じです。ワイルドカードは既知の構成要素より後に置く必要があります。<code>1.x.4</code>は連続した区間を表さないため拒否されます。キャレットとチルダの短縮記法には意図的に対応していません。ログ、生成方針、自動検査、人によるレビューで規則を明確に確認できるよう、境界は比較演算子で明示してください。
優先順位、プレリリース、ビルド情報をご理解ください
セマンティックバージョンは辞書順ではなく、構成要素ごとに比較します。まずメジャー、マイナー、パッチの数値で決まります。プレリリースは対応する安定版より前であり、点区切りの識別子を左から比較します。数値識別子は数値として比較し、非数値識別子より前になります。同じ接頭部なら短い方が前です。<code>+</code>以降のビルドメタデータは正規化した出力に残りますが、SemVerの規定どおり優先順位を変えません。依存関係管理ツールはプレリリースの偶発的な選択も防ぎます。本チェッカーも同様に、同じメジャー、マイナー、パッチ値を持つプレリリース比較が同じ条件集合に明記されている場合だけ、プレリリースを候補にします。たとえば<code>2.0.0-beta.2</code>は<code>>=2.0.0-beta.1 <2.0.0</code>を満たせますが、数値部分が合うだけで広いワイルドカードには入りません。判定は常にローカルかつ決定的です。レジストリへの照会、パッケージの取得、最新版の推測は行わず、同じ文字列には毎回同じ結果を返します。
活用例
依存候補版の検証
ロックファイルを変更する前に、候補版が利用側プロジェクトの宣言範囲に適合するか確認できます。
リリース工程の保護
方針に保存した明示的な互換範囲に基づき、デプロイ成果物を許可または拒否できます。
マニフェスト動作の説明
境界、ワイルドカード、OR条件、プレリリースを試し、解決器が版を採用または除外する理由を調査できます。
よくある質問
APIでの確認料金はいくらですか?
1回のリクエストは$0.002です。同じ決定的チェッカーをブラウザー内で直接実行することもできます。
範囲に複数の条件を含められますか?
はい。AND条件は空白で、OR条件は||で区切ってください。
ハイフン範囲の両端は含まれますか?
完全版の両端は含まれます。部分的な上限は、その構成系列より上の排他的境界へ展開されます。
ビルドメタデータは結果に影響しますか?
いいえ。正規化した版には残りますが、SemVerの優先順位では無視されます。
広い範囲でプレリリースが不適合になるのはなぜですか?
同じ3つの中核数値を持つプレリリースが、その条件集合に明記されている場合だけ候補になるためです。
キャレットとチルダの範囲に対応していますか?
いいえ。明示的な比較、ハイフン範囲、ワイルドカード、部分版、または||条件をご使用ください。
開発者向け — APIアクセス
このページの機能はすべてAPIからも利用できます。自社システムに組み込みたいチーム向けのセクションです。それ以外の方は上のツールをそのままお使いください。
エンドポイント
Bearerトークンで認証し、POST1回でタスクをキューに登録します。結果はWebhookまたは署名付きリンクで受け取れます。
お使いのスタックから呼び出す
curl -X POST https://api.kit.forhosting.com/dev/semver-satisfies \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"version":"2.4.1","range":">=2.0.0 <3.0.0"}'const res = await fetch("https://api.kit.forhosting.com/dev/semver-satisfies", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"version": "2.4.1",
"range": ">=2.0.0 <3.0.0"
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/dev/semver-satisfies",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"version": "2.4.1",
"range": ">=2.0.0 <3.0.0"
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/dev/semver-satisfies", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"version":"2.4.1","range":">=2.0.0 <3.0.0"}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"version":"2.4.1","range":">=2.0.0 <3.0.0"}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/dev/semver-satisfies", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)リクエスト例
{
"version": "2.4.1",
"range": ">=2.0.0 <3.0.0"
}レスポンス例
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "dev.semver_satisfies",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}非同期APIです。task_idは即時に返ります。ポーリングは1秒あたり1リクエストまでです。
料金
単価はすべて公開しています。トークン換算や独自クレジットはありません。失敗したタスクは課金されません。
エラー
| HTTP | コード | 意味 |
|---|---|---|
401 | unauthorized | APIキーが無効か、指定されていません。Authorizationヘッダーを確認してください。 |
402 | insufficient_balance | 残高が不足しています。チャージ後に再度お試しください。 |
404 | unknown_type | 指定されたタスクタイプは存在しません。タイプ名を確認してください。 |
429 | rate_limited | リクエストが多すぎます。しばらく待ってから再度お試しください。 |