在Heroku上安装devDependencies

问题描述 投票:43回答:5

我希望Heroku在我推送之后构建我的应用程序,这样我每次做出更改时都不必推送构建文件夹。但是heroku只安装package.json和grunt(我的构建工具)中的依赖项,并且它的所有组件都在devDependencies中。我想把它们留在他们所属的地方。这里的解决方法是什么?

heroku npm gruntjs dependency-management
5个回答
77
投票

默认情况下,Heroku仅安装生产依赖项,忽略devDependencies下的开发依赖项。

将npm生产变量设置为false可以解决问题:

heroku config:set NPM_CONFIG_PRODUCTION=false

有关更多信息,请访问Heroku Node.js Support page


9
投票

Keeping NPM_CONFIG_PRODUCTION true,我用过Heroku's script hooks

"scripts": {
  ...
  "heroku-prebuild": "export NPM_CONFIG_PRODUCTION=false; export NODE_ENV=; NPM_CONFIG_PRODUCTION=false NODE_ENV=development npm install --only=dev --dev",
  "heroku-postbuild": "export NPM_CONFIG_PRODUCTION=true; export NODE_ENV=production;",
   ...
},

(最后)为我工作。


1
投票
scripts": {
  ...
  "heroku-prebuild": "npm install --only=dev"
}

这对我来说已经足够了。感谢PixnBits关于heroku-prebuild的提示。还 - 我的问题是与巴贝尔。我最终将babel-preset-es2015和其他预设移动到依赖关系,否则babel抱怨预设。

更新:8/11/2017我一直遇到麻烦。事情似乎发生了变化(npm现在是5.3)。但我看到的是heroku-prebuild脚本正在运行,然后安装后的脚本正在运行(但我只是尝试安装-dev)。

所以我一直在做的就是运行:

heroku config:set NPM_CONFIG_PRODUCTION=false

然后就这样设置吧。我想要一个更好的解决方案。


0
投票

要卸载依赖项,您需要执行这些操作

  1. 更新NPM_CONFIG_PRODUCTION heroku config:设置NPM_CONFIG_PRODUCTION = false
  2. 添加heroku-prebuild: 脚本“:{...”heroku-prebuild“:”npm install“}

0
投票

你可以在你的构建脚本"build": "npm install --only=dev"中使用它,以防你仍然想要执行更多操作,例如使用babel转换你的代码你可以做类似这样的事情"build": "npm install --only=dev && babel src --out-dir dist --copy-files"

© www.soinside.com 2019 - 2024. All rights reserved.