Node.jsに入門してハマった備忘録です。
環境
Windows10
npm 5.6.0
Node.js 8.9.4
事象:devDependenciesのパッケージがインストールされない
様々な初心者向けページの情報によると、package.json
内のdevDependencies
の部分に列挙されるパッケージは、「npmプロジェクトで作成したアプリケーションを ライブラリとしてインストールする場合には一緒にインストールされない(依存関係を解決しない)」とある。
そのため、アプリケーション作成時においてはdependencies
もdevDependencies
も変わらず、
npm install --save hogehoge
でも
npm install --save-dev hugahuga
でも、ライブラリhogehogeとhugahugaがインストールされる。
されるはずなのだが、自分の環境では後者のhugahua、つまり--save-dev
オプションを付けるとパッケージがインストールされない。一方でpackage.json
は正しく更新されている。
"dependencies": {
"hogehoge": "^4.16.2"
},
"devDependencies": {
"hugahuge": "^6.26.0"
}
原因は環境変数 NODE_ENV
色々調べたところ、環境変数NODE_ENV
にproduction
が設定されていることが原因だった。
>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かプラグインの設定なんだろうけれど、突き止められなかった。