13
8

More than 5 years have passed since last update.

npm install --save-devでパッケージがインストールできない

Posted at

Node.jsに入門してハマった備忘録です。

環境

Windows10
npm 5.6.0
Node.js 8.9.4

事象:devDependenciesのパッケージがインストールされない

様々な初心者向けページの情報によると、package.json内のdevDependenciesの部分に列挙されるパッケージは、「npmプロジェクトで作成したアプリケーションを ライブラリとしてインストールする場合には一緒にインストールされない(依存関係を解決しない)」とある。

そのため、アプリケーション作成時においてはdependenciesdevDependenciesも変わらず、

npm install --save hogehoge

でも

npm install --save-dev hugahuga

でも、ライブラリhogehogeとhugahugaがインストールされる。

されるはずなのだが、自分の環境では後者のhugahua、つまり--save-devオプションを付けるとパッケージがインストールされない。一方でpackage.jsonは正しく更新されている。

package.json
  "dependencies": {
    "hogehoge": "^4.16.2"
  },
  "devDependencies": {
    "hugahuge": "^6.26.0"
  }

原因は環境変数 NODE_ENV

色々調べたところ、環境変数NODE_ENVproductionが設定されていることが原因だった。

>echo %NODE_ENV%
production

公式マニュアルによれば、

With the --production flag (or when the NODE_ENV environment variable is set to production), npm will not install modules listed in devDependencies.

とのこと。つまりNODE_ENV=productionが設定されているとnpm install時にdevDependenciesのパッケージはインストールされない。

この状態でdevDepenenciesのパッケージもインストールする場合は、

npm install --save-dev hugahuga --dev

というように、--devオプションを付ける。(正確には--devはオプションではなくnpmの設定)

そもそもなんでNODE_ENV=productionになっているの?

これはよくわからなかった。

Atomエディタにatom-terminalというプラグインを入れていて、Alt+Shift+TでプロジェクトRootからターミナルを開くことができる。このコマンドで開いた時だけNODE_ENV=productionとなっていたのでAtomかプラグインの設定なんだろうけれど、突き止められなかった。

13
8
0

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
13
8