⚙️

npmインストールでバージョン固定したい場合はnpm ciを使う

2024/08/17に公開

はじめに(結論)

  1. 開発中は$ npm installで環境を整える(package-lock.jsonを確定させる)
  2. 確定以後は$ npm ciを使用しpackage-lock.jsonに基づいてインストールすることで、実行時点によらず同じバージョンのライブラリがインストールできる

npmインストールコマンドの挙動の違い(installとci)

$ npm install

  • package.jsonをもとにインストールする
  • package-lock.jsonが更新される(されてしまう)

$ npm ci

  • package-lock.jsonをもとにインストールする👍
  • node_modulesディレクトリが存在していれば自動的に削除され、完全に新しい環境でインストールが行われる👍
  • package-lock.jsonは更新されない👍

参考

おまけ:開発環境以外ではdevDependenciesを除く

$ npm-ci --omit=devのように--omit=devを付けることで、devDependencies(開発環境でのみ必要なライブラリ)を除くことができる。
※Github ActionsなどのCI環境でこのオプションを指定すると静的解析とかができなくなってしまうので注意

参考

Discussion