我希望Heroku在我推送之后构建我的应用程序,这样我每次进行更改时都不必推送构建文件夹。但是heroku只安装package.json和grunt(我的构建工具)中的依赖项,并且它的所有组件都在devDependencies中。我想把它们留在他们所属的地方。这里的解决方法是什么?
答案 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)
要解除依赖关系,您需要执行这些操作
更新NPM_CONFIG_PRODUCTION
heroku config:set NPM_CONFIG_PRODUCTION = false
添加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。