如何在 Heroku 上使用多个命令 运行 Procfile?
How to run Procfile with multiple commands on Heroku?
我正在尝试将静态网站部署到 Heroku,但我正在努力如何正确设置 Procfile
。
我在服务器上有 运行 的下一个命令:
npm install
gulp build
(将使用 /public
文件夹进行构建)
http-server
(默认投放 /public
)
我尝试过的:
web: npm install; gulp build; http-server
web: npm install & gulp build & http-server
好的,所以我花了一些时间在这上面并得出了答案。默认情况下,heroku 从 package.json
文件安装所有包,因此不再需要 npm install
。然后剩下的 - gulp build
和 http-server
。
对于这种情况,我将 "postinstall" : "gulp build"
添加到我的 package.json
中,它给我留下了 web: http-server
。
把事情简单化其实已经解决了问题。不确定这些信息对您有多大用处,但值得分享。
您可能也在寻找 &&
或 concurrently 之类的库。
无论如何,根据文档,使用 Procfile
只不过是 npm 启动脚本的入口点。
按照 (npm-scripts) 所述使用 npm 脚本生命周期。
直接来自文档 (heroku-build-process)。
"scripts": {
"start": "node index.js",
"test": "mocha",
"postinstall": "bower install && grunt build"
}
Heroku 采用了“万物皆有应用”的口号,但对于构建包而言。无论您要构建什么,都有适合它的构建包。
您可以在 Procfile 中使用 sh -c
命令 运行 多个命令:
worker: sh -c 'firstCommand && secondCommand && etc...'
注意:Procfile 应该在项目根级别。
例如:
worker: sh -c 'cd backend && yarn install && yarn build && yarn start-worker'
或者在您的情况下(如果您的 Procfile 与 package.json 处于同一级别):
web: sh -c 'npm install && gulp build && npm run http-server'
我正在尝试将静态网站部署到 Heroku,但我正在努力如何正确设置 Procfile
。
我在服务器上有 运行 的下一个命令:
npm install
gulp build
(将使用/public
文件夹进行构建)http-server
(默认投放/public
)
我尝试过的:
web: npm install; gulp build; http-server
web: npm install & gulp build & http-server
好的,所以我花了一些时间在这上面并得出了答案。默认情况下,heroku 从 package.json
文件安装所有包,因此不再需要 npm install
。然后剩下的 - gulp build
和 http-server
。
对于这种情况,我将 "postinstall" : "gulp build"
添加到我的 package.json
中,它给我留下了 web: http-server
。
把事情简单化其实已经解决了问题。不确定这些信息对您有多大用处,但值得分享。
您可能也在寻找 &&
或 concurrently 之类的库。
无论如何,根据文档,使用 Procfile
只不过是 npm 启动脚本的入口点。
按照 (npm-scripts) 所述使用 npm 脚本生命周期。
直接来自文档 (heroku-build-process)。
"scripts": {
"start": "node index.js",
"test": "mocha",
"postinstall": "bower install && grunt build"
}
Heroku 采用了“万物皆有应用”的口号,但对于构建包而言。无论您要构建什么,都有适合它的构建包。
您可以在 Procfile 中使用 sh -c
命令 运行 多个命令:
worker: sh -c 'firstCommand && secondCommand && etc...'
注意:Procfile 应该在项目根级别。
例如:
worker: sh -c 'cd backend && yarn install && yarn build && yarn start-worker'
或者在您的情况下(如果您的 Procfile 与 package.json 处于同一级别):
web: sh -c 'npm install && gulp build && npm run http-server'