npm installとnpm ciの違い
npm install
npmi i
はpackage.json
を見てライブラリをインストールする。pacakge.json
のバージョン指定には幅があるため、npm i
する時期によってはpackage.json.lock
を書き換えてしまう。
つまり完全に同じ開発環境を再現できない(可能性がある)。これはnpm i
の大きな問題点と言える。
npm ci
一方でnpm ci
はpacage.json.lock
からライブラリをインストールする。(これがnpm i
との最大の違い)
具体的には↓の3つをやっている。
- node_modules ディレクトリの削除
- package-lock.json と package.json の整合性のチェック。違ったらエラーを吐く。
- package-lock.json から node_modules を再現
npm i
ではなくnpm ci
を使うことで完全に同じバージョンのライブラリをインストールすることができる。
git clone 直後などはnpm ci
の方が良さそうだ。