LoginSignup
667
444

More than 3 years have passed since last update.

【いまさらですが】package.jsonのdependenciesとdevDependencies

Last updated at Posted at 2017-07-21

package.jsonのdependenciesとdevDependenciesの使い分けについて、いまさらですがまとめます。

dependenciesとdevDependenciesの違い

例えば、sampleという名前のパッケージを開発しているとします。
dependenciesにはrequest、devDependenciesにはmochaが書かれているとします。

package.json
{ 
  "name": "sample",
  "dependencies": {
    "request": "^2.81.0"
  },
  "devDependencies": {
    "mocha": "^3.4.2"
  }
} 

//このほかの要素は省略します 

開発者がpackage.jsonがあるディレクトリでnpm installを行うと、dependenciesに書かれているパッケージもdevDependenciesに書かれているパッケージもすべてnode_modules内にインストールされます。
つまり、requestもmochaもどちらもインストールされます。

ですが、こちらをパッケージとして公開し、開発者以外の人がnpm install sampleとしたときには、dependenciesに書かれているパッケージがnode_modules内にインストールされ、devDependenciesに書かれているパッケージはインストールされません。
つまり、requestのみがインストールされます。

devDependenciesには、開発に必要なパッケージのみを書きます。
ですので、パッケージを使いたい人がnpm install パッケージ名としたときにはdependenciesに書かれているパッケージのみがインストールされます。
一方で、開発者がこのpackage.jsonがあるディレクトリでnpm installを行うと、dependenciesに書かれているパッケージのみではなく、devDependenciesに書かれているパッケージもインストールされます。

package.jsonへの追加方法

dependenciesに追加したいとき

$npm install --save request

--saveオプションを付けて、パッケージをインストールします。

devDependenciesに追加したいとき

$npm install --save-dev mocha

--save-devオプションを付けて、パッケージをインストールします。

package.jsonに書かれているパッケージをインストールする

package.jsonに書かれているすべてのパッケージをインストールする

$npm install

上で書いたように、package.jsonがあるディレクトリでnpm installすると、dependenciesに書かれているパッケージもdevDependenciesに書かれているパッケージもインストールされます。

package.jsonのdependenciesに書かれているパッケージのみインストールする

$npm install --production

開発者として、package.jsonがあるディレクトリでnpm installするときも、dependenciesに書かれているパッケージのみをインストールすることができます。
--productionオプションをつけることで、dependenciesに書かれているパッケージのみインストールされます。

667
444
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
667
444