部分バージョンでのキャレット範囲

^1.2や^1のような部分バージョンでのキャレット範囲の動作を学びます。欠けている部分はゼロで埋められ、キャレットルールが適用されます。

Caret Ranges

詳細な説明

部分バージョンでのキャレット範囲

キャレット範囲を部分バージョン番号(マイナーまたはパッチコンポーネントを省略したバージョン)で使用できます。欠けている部分はキャレットルール適用前にゼロとして扱われます。

展開ルール

部分範囲 補完バージョン 展開形
^1.2 ^1.2.0 >=1.2.0 <2.0.0
^1 ^1.0.0 >=1.0.0 <2.0.0
^0.2 ^0.2.0 >=0.2.0 <0.3.0
^0.0 ^0.0.0 >=0.0.0 <0.1.0

仕組み

  1. 欠けているバージョン部分は0で補完
  2. 補完されたバージョンに標準のキャレットルールを適用
  3. 最も左の非ゼロ桁が上限を決定

部分キャレット範囲の使い時

「このメジャーラインの任意のバージョン」を簡潔に表現したい場合に便利です:

{
  "dependencies": {
    "express": "^4",
    "lodash": "^4.17"
  }
}

^4^4.0.0と同等で、>=4.0.0 <5.0.0を意味します。

等価性について

^11.x同じ結果>=1.0.0 <2.0.0)を生みますが、キャレット形式はnpmスタイルのpackage.jsonでより一般的で、x範囲形式はより自己文書化的です。

ユースケース

メジャーバージョン内の互換リリースを受け入れたい場合のpackage.jsonでのバージョン範囲の簡略化。特にピア依存関係で有用です。

試してみる — Semver Calculator

フルツールを開く