LoginSignup
1

More than 3 years have passed since last update.

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

Last updated at Posted at 2020-10-18

チルダ ^ と キャレット ~

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 に記述されます。

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

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1