LoginSignup
1
1

More than 5 years have passed since last update.

heroku-buildpack-nodejs で devDependencies も npm install する

Last updated at Posted at 2016-08-03

heroku-buildpack-nodejs では通常 dependencies だけが npm install され、devDepencies はされない。
つまり --production オプションでインストールされる。
(厳密には環境変数で制御しているように見えるけど詳細は調べ切れていない)

結論

以下の環境変数を指定すれば良い。

NPM_CONFIG_PRODUCTION=false

NPM_CONFIG_ で始まる環境変数は npm では configuration parameter として扱われるようで、これで npm install --production=false と同じになる、ということらしい。
https://github.com/npm/npm/blob/master/doc/misc/npm-config.md

通常は NODE_ENV でも制御できるが、Buildpack 内で NPM_CONFIG_PRODUCTION がデフォルトで true になっていて、そっちが優先されていた。

何故これが必要だったか

browserify-rails を使って Rails アプリを使っていたところ、デプロイ時に node_modules/.bin/browserify が見つからないよ、というエラーが起きた。

       BrowserifyRails::BrowserifyError: Unable to run node_modules/.bin/browserify. Ensure you have installed it with npm.
       /tmp/build/vendor/bundle/ruby/2.2.0/gems/browserify-rails-3.1.0/lib/browserify-rails/browserify_processor.rb:77:in `ensure_commands_exist!'
       /tmp/build/vendor/bundle/ruby/2.2.0/gems/browserify-rails-3.1.0/lib/browserify-rails/browserify_processor.rb:30:in `call'

browserify はなんとなく devDependencies の方に指定していたが、そのままだと browserify がインストールされずにビルドに失敗するというもの。

別に割り切って dependencies の方に指定する、でもいい気はする。

1
1
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
1
1