AZ Tools

Semver ツール(パーサー・比較・バンプ)

開発

npm・Cargo・Go モジュールなど、どのパッケージエコシステムを扱ってもセマンティックバージョン文字列を読むことになる — 1.10.0 を 1.9.0 より小さいと誤判定したり、prerelease タグを見落としたりするミスは、何時間も無駄にする類のもの。本ツールは 2 つのバージョンをコンポーネント(major・minor・patch・prerelease・build)にパースし、semver.org の公式仕様(prerelease 順序を含む)に従って比較、各バージョンにワンクリックのバンプボタンを提供する。その下の範囲展開機は、最もよく使われる npm の範囲構文(^1.2.3・~1.2.3・~1.2・不安定 API 用の ^0.x.y)を明示的な ≥下限 <上限 に変換 — 比較演算子形式しか受け付けないツールにそのままコピーできる。

Major1
Minor2
Patch3
Prerelease
Build
Major1
Minor2
Patch10
Prerelease
Build

比較

B は A より大きい

マッチ

≥ 1.2.3·< 2.0.0

使い方

  1. Version A・B にバージョン文字列を入力 — パース結果と比較がライブ更新される。
  2. 各バージョンの下のバンプボタン(メジャー / マイナー / パッチ / プレリリース)をクリックして次のバージョンを計算 — リリース計画に便利。
  3. 範囲展開機に ^1.2.3 や ~1.2 のような範囲を入力 → 下限・上限が表示、Copy で ≥a.b.c <x.y.z 文字列をコピー。

よくある質問

プレリリースの順序は?
仕様上、プレリリース付き(1.0.0-alpha)は同じバージョンのプレリリース無し(1.0.0)より小さい。プレリリース内部では識別子を左から比較 — 数値は数値同士で、英数字は辞書順で、同位置で数値は常に英数字より低い順位。よって 1.0.0-alpha < 1.0.0-alpha.1 < 1.0.0-alpha.beta < 1.0.0-beta < 1.0.0。
なぜ ^0.2.3 が <0.3.0 に展開? <1.0.0 ではなく?
npm のキャレットは 0.x.y を特別扱い — pre-1.0 API は不安定とみなし、0.x のバンプは破壊的として扱う。よって ^0.2.3 は 0.2.x のみに、^0.0.3 は 0.0.3 のみにマッチ。npm 自体と同じ挙動。
ビルドメタデータは比較に影響する?
いいえ — 仕様上 +build メタデータは情報目的のみで、バージョン比較時には無視。1.0.0+abc と 1.0.0+xyz は同じ。
ここでサポートされる範囲構文は?
展開機は ^x[.y[.z]]、~x[.y[.z]]、および単独の x・x.y(それぞれ ~x・~x.y のように動作)を処理。'>=1.0.0 <2.0.0' のような組合せ範囲や '1.x' のようなワイルドカードは展開されない — 各バージョンを個別にパースすることは引き続き可能。

関連ツール