パッケージのインストールでは、特定ディレクトリ以下にインストールするローカルと、 複数のプロジェクトなどから使用できるように共用ディレクトリ(CentOS 7の場合 /usr/lib/node_modules/)に インストールするグローバルがあります。
package.json
パッケージのインストールを実行するディレクトリに、JSON形式のpackage.jsonファイルがあると、インストール時に指定したパッケージ情報 を追加してくれます。 または、インストールしたいパッケージをpackage.jsonで設定することも可能です。
package.jsonファイルは、npm init コマンドで作成することができます。 その場合、パッケージ名やバージョンなどの入力を要求されますので、適当に入力します。
npm init
簡単なテストを行うような場合は、以下のようなpackage.jsonファイルを手動作成するか、package.jsonファイル無しで行う方法があります。
{}注意 package.jsonファイルの中身が空の場合、npm install コマンドを実行するとエラーになります。
インストールのオプション
インストールのオプションは、--save-prod 、--save-dev、--save-optional や --no-save などがあります。 オプションの詳細については、以下のドキュメントに書かれています。
どのオプションを使ったら良いか分からない場合は、オプション無しでインストールするのが良いでしょう。オプション無し(ローカル)
オプション無しの場合、パッケージはローカルにインストールされ、package.jsのdependenciesにパッケージが追加されます。
npm install [パッケージ名]
例
$ npm install mocahpackage.jsonは、以下のようになっています。
{ "dependencies": { "mocha": "^7.1.2" } }package-lock.jsonは、以下のようになっていています。
{ "requires": true, "lockfileVersion": 1, "dependencies": { "ansi-colors": { "version": "3.2.3", "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-3.2.3.tgz", "integrity": "sha512-LEHHyuhlPY3TmuUYMh2oz89lTShfvgbmzaBcxve9t/9Wuy7Dwf4yoAKcND7KFT1HAQfqZ12qtc+DUrBMeKF9nw==" }, ・・・ }
--save-dev(ローカル)
オプション--save-dev、または -D の場合、パッケージはローカルにインストールされ、 package.js の devDependencies に追加されます。 これは開発目的(例 ユニットテスト)に必要なパッケージをインストールする場合に指定するようです。
npm install --save-dev [パッケージ名]
例
$ npm install --save-dev mocahpackage.jsonは、以下のようになっています。
{ "devDependencies": { "mocha": "^7.1.2" } }package-lock.jsonは、以下のようになっていて、各パッケージの項目に dev: true が追加されています。
{
"requires": true,
"lockfileVersion": 1,
"dependencies": {
"ansi-colors": {
"version": "3.2.3",
"resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-3.2.3.tgz",
"integrity": "sha512-LEHHyuhlPY3TmuUYMh2oz89lTShfvgbmzaBcxve9t/9Wuy7Dwf4yoAKcND7KFT1HAQfqZ12qtc+DUrBMeKF9nw==",
"dev": true
},
・・・
}
-g(グローバル)
グローバルにインストールする場合は、オプション-gを付けて実行します。
npm install -g [パッケージ名]
CentOS 7 の場合、/usr/lib/node_modules/以下にインストールされているようです。
$ ls -l /usr/lib/node_modules/ total 4 drwxr-xr-x. 10 root root 4096 Dec 12 12:13 npm
/usr/lib/node_modules/npm/ は以下のようになっていて、 グローバルでインストール済みのパッケージ名のディレクトリがあります。
$ ls -l /usr/lib/node_modules/npm total 244 -rw-r--r--. 1 root root 959 Oct 10 2019 appveyor.yml -rw-r--r--. 1 root root 25263 Nov 19 08:05 AUTHORS drwxr-xr-x. 3 root root 114 Dec 12 12:13 bin -rw-r--r--. 1 root root 131669 Nov 19 08:05 CHANGELOG.md drwxr-xr-x. 2 root root 116 Dec 12 12:13 changelogs -rwxr-xr-x. 1 root root 529 Oct 10 2019 configure -rw-r--r--. 1 root root 4484 Oct 10 2019 CONTRIBUTING.md drwxr-xr-x. 6 root root 54 Dec 12 12:13 doc drwxr-xr-x. 4 root root 108 Dec 12 12:13 html drwxr-xr-x. 8 root root 4096 Dec 12 12:13 lib -rw-r--r--. 1 root root 9742 Oct 10 2019 LICENSE -rw-r--r--. 1 root root 156 Oct 10 2019 make.bat -rw-r--r--. 1 root root 5612 Nov 19 08:05 Makefile drwxr-xr-x. 5 root root 42 Dec 12 12:13 man drwxr-xr-x. 369 root root 12288 Dec 12 12:13 node_modules -rw-r--r--. 1 root root 7955 Nov 19 08:05 package.json -rw-r--r--. 1 root root 4705 Nov 19 08:05 README.md drwxr-xr-x. 2 root root 4096 Dec 12 12:13 scripts [vagrant@local t]$ ls -l /usr/lib/node_modules
/usr/lib/node_modules/npm/node_modules/ は以下のようになっていて、 グローバルのインストール済みパッケージ名のディレクトリがあります。
$ ls -l /usr/lib/node_modules/npm/node_modules/ total 12 drwxr-xr-x. 2 root root 75 Dec 12 12:13 abbrev drwxr-xr-x. 2 root root 135 Dec 12 12:13 agent-base ・・・ ・・・ drwxr-xr-x. 5 root root 181 Dec 12 12:13 yargs drwxr-xr-x. 3 root root 109 Dec 12 12:13 yargs-parser