1
1

導入

Node系のプロジェクトをセットアップするとき、依存関係のインストールしますが、その際、「npm i」を使用することが多いかと思います。一方で、「npm i」に似たコマンドとして、「npm ci」があります。
この違いがよくわからずに使っていたので、その内容について調べて本記事にまとめました。
正直赤字の2箇所が本記事において重要な部分です。

[npm i] と[npm ci]の違い

npm iとは?

「npm i」は「npm install」の短縮形で、Node.jsプロジェクトの依存関係をインストールするためのコマンドです。このコマンドは、package.jsonにリストされているすべての依存関係をインストールしてくれます。

npm iの特徴としては以下の点が挙げられます。

  • package.jsonに基づいて依存関係をインストールします。
  • 依存関係をインストールする際、package-lock.jsonを更新します。もし、package-lock.jsonが存在しない場合、生成してくれます。
  • 依存関係がすでにインストールされている場合、node_modulesフォルダを参照して、必要に応じて更新や追加を行ってくれます。

npm ciとは?

「npm ci」は「npm clean install」の略で、特にCI(継続的インテグレーション)環境やデプロイプロセスで使用されるので、「npm ci」の「ci」をCI(継続的インテグレーション)とご認識されることがしばしばあるとかないとか。

npm ci の特徴としては以下の点が挙げられます。

  • 依存関係をインストールする際、package-lock.jsonをしっかりと参照し、記述されているバージョンを正確にインストールしてくれます。そのため、環境差異が生じにくいです。
  • package-lock.jsonが存在しない場合、エラーが発生します。
  • node_modulesフォルダを完全に削除してから再インストールするため、前回のインストール状態に依存せず、クリーンな状態を保証します。
  • package-lock.jsonに基づいて直接依存関係をインストールするため、npm iよりも高速にインストールが完了します。

使い分けのポイント

「npm i」と「npm ci」を使い分ける際のポイントは、主に開発環境と本番環境といった環境ごとにおけるニーズによります。

  • 開発環境では、柔軟に依存関係を管理するために「npm i」を使用することが多いです。新しいパッケージを追加したり、既存のパッケージを更新したりする際に便利です。

  • CI/CD環境や本番環境では、一貫性とスピードを重視して「npm ci」を使用することが推奨されます。これにより、依存関係のバージョンが確実に固定され、予期せぬエラーを防ぐことができます。

  • また、開発環境においても、開発チーム全体で同じ依存関係を使用するためには、一貫したインストールが重要となるため、「npm ci」を使用することで、チームメンバー間で依存関係のバージョンがズレることを防げます。

最後に

「npm i」と「npm ci」はどちらもNode.jsプロジェクトの依存関係をインストールするための強力なツールですが、それぞれの特性と用途が異なります。
これらの違いを理解して、適切な場面で適切なコマンドを使用することで、プロジェクトの開発と運用をスムーズに進めることができるかと思います。

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1