Как запустить 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'
Другие вопросы по тегам