背景
特定のパッケージをインストールしてからpakage.json
を見ると、以下のように表記されていることがわかる。
$ npm install --save react
"dependencies": {
"react": "^15.3.2"
}
15.3.2
と最新のバージョンだけ記載されれば良いのに、なぜか^
のマークが前についている。
これの意味を以下でメモする。
^ (キャレット)
パッケージのバージョン番号のうち、一番左のゼロではない値を変更しない範囲でアップデートを許容する、という意味。
具体的にいうと、以下のように整理できる。
→1.2.3以上2.0.0未満までのアップデートはOKにする。
→0.2.3以上0.3.0未満までのアップデートはOKにする。
→0.0.3以上0.0.4未満までのアップデートはOKにする。
インストールされたパッケージは、時間が経つと新しく更新され、バージョンが変更されるケースがある。つまり、pakage.json
で複数の人が時間差をもってインストールすると、それぞれ違うバージョンのパッケージをインストールする可能性があるということである。
そのために必要なのがpakage-lock.json
である。
pakage-lock.json
に ついて知りたい方は以下のリンク参考にしてください。
npm i とnpm ciの違い
~ (チルダ)
minor version
が明記されていれば、patch version
のアップデートを許容するが、明記されていなければ、minor version
のアップデートを許容。
具体的にいうと、以下のように整理できる。
→1.2.3以上1.3.0未満までのアップデートはOKにする。
→1.2以上1.3.0未満までのアップデートはOKにする。
→1.0.0以上2.0.0未満までのアップデートはOKにする。