我正在使用网络包。
此外,我还没有提交npm_modules文件夹和公共文件夹,其中包含所有生成的文件。在部署和设置我的服务器(它已经在寻找公共文件夹)之后,我无法弄清楚如何构建我的应用程序(我有webpack build命令)。
在上传之前提交我似乎是一个坏主意。也许有一些温和的决定......有什么想法吗?
答案 0 :(得分:64)
"heroku-postbuild": "webpack -p --config ./webpack.prod.config.js --progress"
这样更好,因为如果您使用postinstall,每次执行npm i
构建脚本都会被解雇
答案 1 :(得分:14)
按@orlando所建议的postinstall
脚本执行:
"postinstall": "webpack -p --config ./webpack.prod.config.js --progress"
在此方法中,请务必heroku config:set NODE_ENV=production
heroku config:set NPM_CONFIG_PRODUCTION=true
或
您可以找到自定义buildpack heroku-buildpack-webpack可用。
这些链接可能有助于您建立理解:
答案 2 :(得分:1)
2019年,最简单的方法是使用heroku/nodejs
buildpack(如果您在存储库的根目录中有package.json
,则会自动选择)并添加一个build
脚本打包json:
"build": "webpack --mode production --config ./webpack.prod.config.js"
Heroku将在部署时自动运行此脚本。奖励点是因为这是运行在本地或CI中测试构建的直观脚本。
这在Heroku的Best Practices for Node.js Development文档中有所描述:
npm的生命周期脚本非常适合自动化。 Heroku提供了自定义钩子,使您可以在安装依赖项之前或之后运行自定义命令。如果需要在构建应用程序之前运行某些程序,则可以使用
heroku-prebuild
脚本。需要使用grunt,gulp,browserify或webpack构建资产吗?用build
脚本来完成。