😎
package.jsonの'~'と'^'の違い
初めに
package.jsonの ~
と ^
の違いを調べたので、メモとして残します
前提
バージョンは基本的にはmajor.minor.patch
と表示される
結論
-
~(チルダ)
はmajor, minorを固定し、patchのみ変更可能にする -
^(キャレット)
はmajorを固定し、minor, patchを変更可能にする
~x.x.x
の時
Allows patch-level changes if a minor version is specified on the comparator. Allows minor-level changes if not.
- minorの指定があるならpatchのみ変更する
- minorの指定がないならminorのみ変更する
例
~1.2.3
の場合
minorの指定があるのでpatchのみ変更
=> 1.2.3以上、1.2.9以下
~1.2
の場合
minorの指定があるのでpatchのみ変更
=> 1.2.0以上、1.2.9以下
~1
の場合
minorの指定がないのでminorのみ変更
=> 1.0.0以上、1.9.0以下
^x.x.x
の時
Allows changes that do not modify the left-most non-zero element in the [major, minor, patch] tuple. In other words, this allows patch and minor updates for versions 1.0.0 and above, patch updates for versions 0.X >=0.1.0, and no updates for versions 0.0.X.
一番左の0でない値を変更する
- majorが0でないならminor, patch両方を変更できる
- majorが0でminorが0でないならpatch両方を変更できる
- major, minorが0ならバージョンアップなし
例
^1.2.3
の場合
1.2.3以上1.9.9以下
^0.2.3
の場合
0.2.3以上0.2.9以下
^0.0.3
の場合
0.0.3以上0.0.3以下
=> バージョンアップなし
Discussion