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.x
x の位置以下のレベルのバージョンは問わずにインストールします。
1.2.x
→ >=1.2.0 < 1.3.0
1.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.3
1.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>