🔖

package.json に記述される チルダ ^ や キャレット ~ について

2021/12/25に公開

チルダ ^ と キャレット ~

package.json に記述されているバージョン情報の チルダ ^ や キャレット ~ は以下の意味になります。

  • バージョン固定
    • ex) 3.2.1
  • チルダ ~: マイナーバージョンまでの挙動を保証
    • ex) ~3.2.1 = 3.2.x
  • キャレット ^: メジャーバージョンまでの挙動を保証
    • ex) ^3.2.1 = 3.x.x
  • latest: 全てのバージョンでの挙動を保証
    • ex) * = x.x.x

npm install 時の挙動

サンプルとして 3.2.1, 3.2.2, 3.3.0, 4.0.0 のバージョンがリリースされている npm パッケージ(a, b, c, d)があるとします。

そして、package.json を以下のように記述されているとします。

package.json
{
  (省略)
  "dependencies": {
    "a": "3.2.1",
    "b": "~3.2.1",
    "c": "^3.2.1",
    "d": "*"
  },
  (省略)
}

このときに npm install コマンドを実行した場合、インストールされるバージョンは以下のようになります。

記述方法 key value 理解しやすい表記 インストールするバージョン
バージョン固定 a 3.2.1 3.2.1 3.2.1
チルダ指定 b ~3.2.1 3.2.x 3.2.2
キャレット指定 c ^3.2.1 3.x.x 3.3.0
latest d * x.x.x 4.0.0

※ 前提として a, b, c, d のリリースされているパッケージのバージョンは 3.2.1, 3.2.2, 3.3.0, 4.0.0 とした時。

豆知識

ちなみに npm のバージョン管理は セマンティック バージョニング に準拠しているはずのため、ほとんどがキャレット ^ 指定のバージョンが package.json に記述されます。

【参考】
セマンティック バージョングについてのメモ

GitHubで編集を提案

Discussion