683
451

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 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に書かれているパッケージのみインストールされます。

683
451
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
683
451

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?