package.json ファイルの dependencies プロパティには、現在開発中の Node パッケージ(アプリケーション)が依存するパッケージを列挙しておくことができます。
下記の例では、このパッケージ(アプリ)を使用するには、request パッケージと request-promise パッケージが必要であることを示しています(バージョンの指定方法は後述)。
{
"name": "myapp",
...
"dependencies": {
"request": "^2.88.0",
"request-promise": "^4.2.2"
}
}
カレントディレクトリにこの package.json ファイルがある状態で、下記のように実行すると、dependencies プロパティに列挙された依存パッケージが node_modules ディレクトリに自動的にインストールされます。
$ npm install
正確には、devDependencies プロパティに列挙された依存パッケージも一緒にインストールされます(詳細は後述)。
バージョンの指定方法にはいろいろありますが、よく使われるのは下記のような指定方法です。
1.2.3指定したバージョンをインストールします。
>=1.2.3 <1.3.0指定した範囲のうち最新のものをインストールします。
1.2.xx の位置以下のレベルのバージョンは問わずにインストールします。
1.2.x → >=1.2.0 < 1.3.01.x → >=1.0.0 <2.0.0^1.2.3後方互換性のある(だろうと思われる)バージョンのうち、最新のバージョンをインストールします。
オススメの指定方法です。
npm install --save <pkg> でパッケージをインストールした場合、このバージョン指定方法で package.json の dependencies プロパティの値が更新されます。
major、minor、patch レベルのバージョンを左から見て、最初に 0 じゃない数値がみつかったらそこのバージョンを固定し、それより下のレベルのバージョンが更新されます。
^1.2.3 → >=1.2.3 <2.0.0^0.2.3 → >=0.2.3 <0.3.0^0.0.3 → >=0.0.3 <0.0.4^1.2.3-beta.2 → >=1.2.3-beta.2 <2.0.0 (1.2.3 も含む)^0.0.3-beta → >=0.0.3-beta <0.0.4 (0.0.3 も含む)^1.2.x → >=1.2.0 <2.0.0^0.0.x → >=0.0.0 <0.1.0^0.0 → >=0.0.0 <0.1.0^1.x → >=1.0.0 <2.0.0^0.x → >=0.0.0 <1.0.0ちなみに大文字の X でも OK。
~1.2.31.2.3 とバージョン固定で指定する方法に似ていますが、下位レベルの更新だけを受け入れます。
つまり、軽微な変更だけを許可する指定方法です。
minor レベルのバージョンが指定されている場合は、patch レベルのバージョン更新のみを許可します。
~1.2.3 → >=1.2.3 <1.3.0~0.2.3 → >=0.2.3 <0.3.0~1.2 → >=1.2.0 <1.3.0 (1.2.x と同じ)~0.2 → >=0.2.0 <0.3.0 (0.2.x と同じ)~1.2.3-beta.2 → >=1.2.3-beta.2 <1.3.0 (1.2.3 も含む)major レベルのバージョンしか指定されていない場合は、minor レベル以下のバージョン更新を許可します。
~1 → >=1.0.0 <2.0.0 (1.x と同じ)~0 → >=0.0.0 <1.0.0 (0.x と同じ)* or ""どのバージョンでも OK。 ようするに必ず最新バージョンのパッケージをインストールするという指定です。
開発時(テスト時)のみ使用するパッケージの依存関係は、dependencies プロパティではなく、devDependencies プロパティに記述します。
dependencies プロパティの方には、そのパッケージ(やアプリ)を使用するユーザ環境で必要なパッケージのみを列挙してください。
dependencies プロパティに記述された依存パッケージがインストールされるのは、以下のようにパッケージ名指定でそのパッケージをインストールしたときです。
つまり、パッケージの使用者としてパッケージをインストールしたときは、dependencies プロパティに従って依存モジュールがインストールされます。
$ npm install <pkg>
一方で、パッケージ自体の開発者は、ローカルディレクトリに package.json ファイルがある状態で、次のようなコマンドを実行して依存パッケージを一括インストールするはずです。
この場合は、dependencies プロパティに書かれた依存モジュールに加え、devDependencies プロパティに書かれた依存モジュールも一緒にインストールされます。
$ npm install
ローカルディレクトリに package.json がある環境でも、dependencies プロパティに列挙された依存モジュールのみをインストールしたい場合は、下記のように --production オプションを使用します。
$ npm install --production
npm install コマンドを使ってパッケージをインストールするときに、--save オプションを付加すると、カレントディレクトリにある package.json の dependencies プロパティの記述も更新することができます。
$ npm install --save <pkg>
開発のみに使用するパッケージの依存情報 (devDependencies) を追加するときは、--save オプションの代わりに --save-dev オプションを使用します。
$ npm install --save-dev <pkg>