使用 heroku-buildpack-nodejs 时,也会执行 npm install 命令安装 devDependencies

在Heroku的Node.js构建包(heroku-buildpack-nodejs)中,通常只会安装dependencies而不会安装devDependencies。
换句话说,它们会通过使用–production选项来安装。
(严格来说,似乎有通过环境变量进行控制,但我没有调查清楚详细情况)。

总结

只需要指定以下环境变量即可。

NPM_CONFIG_PRODUCTION=false

听说,以NPM_CONFIG_开头的环境变量在npm中被视为配置参数,据说这和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。

我觉得可以不特别在依赖项上指定,只是这样而已。

bannerAds