0.xバージョンでのキャレット範囲

0.xバージョンでのキャレット範囲の異なる動作を学びます。0.xは不安定と見なされるため、^0.2.3は^1.2.3よりも制限的です。

Caret Ranges

詳細な説明

0.x(1.0未満)バージョンでのキャレット範囲

メジャーバージョンが0の場合、キャレット範囲は大幅に制限的になります。これは、SemVerが0.x.yをAPIが安定していない初期開発段階として扱うためです。

比較表

範囲 展開形 許可される更新
^1.2.3 >=1.2.3 <2.0.0 マイナー + パッチ
^0.2.3 >=0.2.3 <0.3.0 パッチのみ
^0.0.3 >=0.0.3 <0.0.4 なし(完全一致)

なぜ違いがあるのか

SemVerでは、0.y.zは「いつでも何でも変わる可能性がある」ことを意味します。キャレット演算子は最も左の非ゼロ桁にロックすることでこれを尊重します:

  • ^1.x.x — 最も左の非ゼロはメジャーの1 → メジャーをロック
  • ^0.2.x — 最も左の非ゼロはマイナーの2 → メジャーとマイナーをロック
  • ^0.0.3 — 最も左の非ゼロはパッチの3 → すべてをロック

実際の影響

多くの人気パッケージは0.x範囲で時間を過ごします。ライブラリの^0.14.0に依存している場合、0.15.0はマイナーアップデートのように見えても自動的には取得されません。これは意図的です — ライブラリの作者はまだAPIの安定性をコミットしていません。

ユースケース

まだバージョン1.0.0に達していないパッケージへの依存関係を管理する場合、例えば初期段階のライブラリやまだ活発に開発中の内部ツールなど。

試してみる — Semver Calculator

フルツールを開く