npm インストールのオプションを使い分ける
前回の記事でpackage.jsonとpackage-lock.jsonの違いやnode_modulesをまとめました。今回は、
・npm install
・npm install <package>
・npm install -D <package>
・npm install -g <package>
の使い分けをまとめます。
npm install
用途・・・package.json及びpackage-lock.jsonが共有されていて、自分のディレクトリでまだpackageがインストールできていない時にnode_modulesを生成(packageをインストール)する。
もしくは、package.jsonが更新され、新たに全てのパッケージをインストールするとき
npm install <package>
ローカルインストール
用途・・・グローバルインストールでもdevインストールでもない時に使用する。基本的にはこのインストールコマンドを使用する。
packageは、.node_modules/.bin/配下にインストールされる
※共同開発するときは基本的にローカルインストール。
package.jsonを自動的に更新でき、package.jsonとpackage-lock.jsonを他の人に共有し、各々がnpm installで全く同じpackageをnode_modulesに書くのできるので、全く同じ開発環境を整えることができる。
npm install -D <package>
これもローカルインストール。
用途・・・開発でしか使わないpackageをインストールするときに使用する。こちらも同様にpackage.jsonが自動的に更新されるが、package.jsonにはdev-dependciesと記載される。
パッケージは、.node_moduless/.bin/配下になる
※開発者でない人が、npm installを使用すると開発でしか使わないパッケージもインストールしてしまうが、
npm install -productionを使って開発用パッケージを除外してインストールできる。そのため、開発用とそうでないパッケージのインストールは使い分ける必要がある。
npm install -g <package>
グローバルインストール。
自分のPC環境ならどこでも使えるようになる。
package.jsonは更新されない。よって、なにもかもグローバルインストールするのはダメ。(パッケージ情報を共有できないので他のPCで同じ環境が作れない)
パッケージは、/usr/local/bin/配下に格納される
CLIツールで使用するにはpackage.jsonのscriptに定義する必要がある。
※一人で開発するときは、他人にパッケージを共有しないので、グローバルインストールでも良い。
余談
チーム開発の流れ
ファイルサイズがデカくなってしまうため、チーム開発でnode_modulesは共有しない。package.jsonとpackage-lock.jsonのみを共有する。
手順
1.node_modules以外をgithubにアップする
2.メンバーはローカル環境にプロジェクト全体ファイルをダウンロード。
3.npm install を使用して、node_modulesを作成(パッケージをインストール)
ex) scssをcssに変換(ビルド)するためにはsassが必要。
状況に応じて、グローバルもしくはローカルインストールする
npmとyarnの違い
yarnはnpmの後に登場したJSのパッケージマネージャ。
npmの上位互換のツールで、npmとの互換性があり、package.jsonが使える
yarnが優れている点
・インストールの高速化
npmもアップデートされているがyarnの方が高速
・高いセキュリティ
yarnはライブラリの整合性をチェックする
・バージョン管理しやすい
yarnにしかない機能がある
upgrade-interactive・・・アップデートできるパッケージを表示する。
次回の記事では、npmとyarnのコマンドをまとめます。