Node.js の環境で追加パッケージをインストールするには、Node Package Manager(npm コマンド)を使用します。
下記のようなコマンドで、Node パッケージをインストールできます。
公開されている Node パッケージは、The NPM Registry というサイトで検索することができます。
$ npm install <package_name>
上記のようにインストールしたパッケージは、カレントディレクトリ以下の node_modules ディレクトリに格納されます。
例えば、socket.io パッケージをインストールした場合は、node_modeles/socket.io ディレクトリ内に関連ファイルが格納されます。
また、socket.io が依存しているパッケージがある場合は、自動的に node_modules/socket.io/node_modules 以下にインストールされます。
node_modules ディレクトリ以下にすべてが格納されるので、npm コマンドによってそれ以外のディレクトリが汚染されてしまう心配をする必要がありません。
また、別の記事で紹介している package.json というファイルに必要なパッケージを記述しておくことにより、1 コマンドで依存パッケージをインストールできるため、Node.js を使用したアプリケーションを配布するときは、node_modules ディレクトリ以下の外部パッケージを配布する必要はありません。
$ npm install socket.io
...
socket.io@0.9.11 node_modules\socket.io
├── policyfile@0.0.4
├── redis@0.7.3
└── socket.io-client@0.9.11 (xmlhttprequest@1.4.2, uglify-js@1.2.5, active-x-obfuscator@0.0.1, ws@0.4.23)
$ npm install restify
restify@1.4.4 node_modules\restify
├── byline@2.0.2
├── lru-cache@1.1.0
├── semver@1.0.14
├── mime@1.2.5
├── retry@0.6.0
├── async@0.1.22
├── node-uuid@1.3.3
├── qs@0.5.0
├── formidable@1.0.11
├── bunyan@0.10.0
└── http-signature@0.9.9 (asn1@0.1.11, ctype@0.5.0)
パッケージ名の後ろに @4.16.4 という形でバージョンを指定すると、そのバージョンのパッケージをインストールすることができます。
$ npm install express@4.16.4
また、@">=4.0.0" や @">=4.0.0 <=4.16.4" という書き方で、インストールするパッケージのバージョンを絞り込むこともできます。
このように、大なり記号 (>) や小なり記号 (<) を使用してバージョンを絞り込む場合は、シェルがリダイレクト指定と認識してしまわないように、バージョン部分をダブルクォート (") で囲んで指定する必要があることに注意してください。
$ npm install express@">=4.0.0"
$ npm install express@">=4.0.0 <=4.16.4"
npm install コマンドでは、デフォルトではカレントディレクトリの node_modules ディレクトリ内にパッケージをインストールします。これは、実行環境の変化をそのアプリケーションに閉じるという意味で合理的な振る舞いといえます。
一方で、すべての Node.js アプリケーションから共通で使用したいパッケージがある場合は、グローバルモードでインストールすることができます。
グローバルモードでパッケージをインストールするには、npm install コマンドに -g オプションを指定します。
$ npm install -g <package_name>
グローバルモードでインストールしたパッケージは、デフォルトでは、以下のディレクトリにインストールされるようです。
%APPDATA%npm\node_modules (%APPDATA% はユーザごとに異なる)/usr/local/lib/node_modulesパッケージのアンインストールは、npm install コマンドの代わりに、npm uninstall コマンドを使用します。
$ npm uninstall <package_name> # ローカルモードでインストールしたパッケージを削除
# npm uninstall -g <package_name> # グローバルモードでインストールしたパッケージを削除