在Heroku上安装devDependencies

时间:2014-04-09 06:44:25

标签: heroku npm gruntjs dependency-management

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

6 个答案:

答案 0 :(得分:77)

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

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

heroku config:set NPM_CONFIG_PRODUCTION=false

Heroku Node.js Support page提供了更多信息。

答案 1 :(得分: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;",
   ...
},

(最后)为我工作。

答案 2 :(得分:1)

var userAgentApplication = new **Msal**.UserAgentApplication("your_client_id", null, function (errorDes, token, error, tokenType) {
              // this callback is called after loginRedirect OR acquireTokenRedirect (not used for loginPopup/aquireTokenPopup)
        })

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

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

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

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

然后就这样设置吧。我喜欢更好的解决方案。

答案 3 :(得分:0)

要解除依赖关系,您需要执行这些操作

  1. 更新NPM_CONFIG_PRODUCTION

    heroku config:set NPM_CONFIG_PRODUCTION = false

  2. 添加heroku-prebuild:

    脚本”:{   ...   “ heroku-prebuild”:“ npm安装” }

答案 4 :(得分:0)

您可以在构建脚本"build": "npm install --only=dev"中使用此命令,以防万一您仍然想执行更多操作,例如使用babel编译代码,您可以执行以下操作"build": "npm install --only=dev && babel src --out-dir dist --copy-files"

答案 5 :(得分:0)

自 2018 年 3 月 1 日起 Heroku installs devDependencies by default