0
Help us understand the problem. What are the problem?

posted at

updated at

パッケージ管理システム#2

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のコマンドをまとめます。

Register as a new user and use Qiita more conveniently

  1. You can follow users and tags
  2. you can stock useful information
  3. You can make editorial suggestions for articles
What you can do with signing up
0
Help us understand the problem. What are the problem?