0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

コードをクローンしたり、リポジトリをプルした際、package.jsonに記載された依存パッケージを node_modulesにインストールするため、$ npm iを実行すると思います。

この$ npm iと似たコマンドに$ npm ciがあります。今回は、この2つのコマンドの違いについてご紹介します。また、昨日「package.jsonpackage-lock.jsonの違い」についての記事も書きましたので、興味があればそちらも併せてご覧ください。

npm i

$ npm iを実行すると、package-lock.jsonに記載されている正確なバージョンのパッケージが node_modulesにインストールされます。ただし、package-lock.jsonが存在しない場合は、package.jsonに記載されているバージョン範囲内で最新のバージョンのパッケージがインストールされます。このとき、新たにpackage-lock.jsonが生成され、インストールされたパッケージの正確なバージョンが記録されます。

npm ci

$ npm cipackage-lock.jsonに記載されている正確なバージョンのパッケージをインストールする点では$npm iと似ていますが、動作にはいくつか違いがあります。$ npm cipackage-lock.jsonが存在しない場合にエラーを吐き、コマンドが実行できません。また、package.jsonpackage-lock.jsonに矛盾がある場合もエラーとなります。さらに、$ npm iが不足分を補完して再利用するのに対し、$ npm ciは既存のnode_modulesを完全に削除した上でパッケージを再インストールします。

どちらを使えばいいのか

これらの違いから、$ npm i開発中の柔軟な依存関係管理に向いており、$ npm ci本番環境や CI/CDのように再現性が求められる場面で使用するのが適しています。

まとめ

この記事では、$ npm i$ npm ciの違いについて解説しました。2日連続でパッケージ管理に関する記事を書いたことで、少し詳しくなった気がします。今後も、Web開発に役立つ小ネタを発信していきますので、ぜひお楽しみにしてください!

0
0
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
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?