チルダ ^
と キャレット ~
package.json に記述されているバージョン情報の チルダ ^
や キャレット ~
は以下の意味になります。
- バージョン固定
- ex)
3.2.1
- ex)
- チルダ
~
: マイナーバージョンまでの挙動を保証- ex)
~3.2.1
=3.2.x
- ex)
- キャレット
^
: メジャーバージョンまでの挙動を保証- ex)
^3.2.1
=3.x.x
- ex)
- latest: 全てのバージョンでの挙動を保証
- ex)
*
=x.x.x
- ex)
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 に記述されます。