💡

package.json のチルダ(~) とキャレット(^) の違い

2023/08/24に公開

動機

いつも「あれ?どっちだったっけ?」となるため

セマンティックバージョニング

セマンティックバージョニングではバージョンを表す3つの数字
x.x.xmajor, minor, patch という意味をもたせています

  • major: 前のバージョンと互換性を損なう変更をするときに上げる数字
  • minor: 前のバージョンと互換性を持つ新機能追加の変更をするときに上げる数字
  • patch: 前のバージョンと互換性を持つバグ修正の変更をするときに上げる数字

npm はセマンティックバージョニングを推奨しています。

チルダ(~)表記

  • minorバージョンが指定されている場合
    • patchバージョンの変更を許容
    • ~1.2.3 = 1.2.3 <= version < 1.3.0(1.2.3以上,1.3.0未満)
  • minorバージョンが指定されていない場合
    • minorバージョンの変更を許容
    • ~1 = 1.0.0 <= version < 2.0.0(1.0.0以上,2.0.0未満)

キャレット(^)表記

1番左側にある、ゼロでないバージョニングは変えない

^1.2.3 = 1.2.3 <= version < 2.0.0(1.2.3以上,2.0.0未満)
^0.2.3 = 0.2.3 <= version < 0.3.0(0.2.3以上,0.3.0未満)
^0.0.3 = 0.0.3 <= version < 0.0.4(0.0.3以上,0.0.4未満)

参考文献

Discussion