Как запустить Procfile с несколькими командами на 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
3 ответа
Итак, я потратил немного времени на это и придумал ответ. По умолчанию heroku устанавливает все пакеты из package.json
файл, так npm install
больше не требуется. Тогда что осталось - gulp build
а также http-server
,
Для этого случая я добавил "postinstall" : "gulp build"
к моему package.json
и это оставило меня с web: http-server
,
Упрощение вещей фактически решило проблему. Не уверен, насколько полезна эта информация для вас, но стоит поделиться.
Возможно, вы также искали &&
или библиотека, как одновременно.
Независимо от того, и в соответствии с документами, используйте Procfile
как не более чем точка входа в ваш стартовый скрипт npm.
Используйте жизненный цикл сценариев npm, как указано (npm-scripts).
Прямо из документации (heroku-build-process).
"scripts": {
"start": "node index.js",
"test": "mocha",
"postinstall": "bower install && grunt build"
}
Heroku приняла мантру "есть приложение для всего", но для buildpacks. Что бы вы ни собирали, для этого есть сборка.
Вы можете запустить несколько команд внутри 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'