Heroku собирает приложение React перед развертыванием через Django - PullRequest
0 голосов
/ 31 октября 2019

Я успешно развернул свой проект Django в Heroku. Но я хочу иметь возможность автоматически собирать React перед развертыванием.

Приложение React обслуживается через Django, поэтому у меня есть связанные файлы React в моих шаблонах и статических папках приложения Django.

Структура проекта выглядит примерно так:

react/
  build/
  components/
  App.js
  package.json
  ...
django/
  templates/
  static/
  ...
Procfile
requirements.txt
Pipfile

У меня есть проекты React и Django в одном репозитории, и я хочу автоматически запустить npm run build перед развертыванием Django.

Я настроил скрипт сборки, чтобы переместить связанные файлы из React в Django.

Из того, что я прочитал, мне нужно добавить пакет сборки NodeJS, но я не знаю, какчтобы запустить его до сборки пакета Python.

По сути, процесс NodeJS должен просто собрать мое приложение React и затем завершиться. После этого процесс Python должен запуститься и развернуть проект Django.

Одним из решений для этого было бы использовать Docker и развернуть этот образ в Heroku.
Но есть ли более простой способ?

Ответы [ 2 ]

1 голос
/ 31 октября 2019

Вы можете добавить проиндексированные buildpacks в heroku. Посмотрите здесь для добавления нескольких пакетов сборки в ваш проект.

Я написал простое руководство о том, как можно развернуть приложение React + Django на Heroku . Вы можете посмотреть, если вы заинтересованы. В вашем случае вам нужны только инструкции для добавления пакетов сборки.

$ heroku buildpacks:add --index 1 heroku/nodejs
$ heroku buildpacks:add --index 2 heroku/python

Вам не нужно устанавливать никаких дополнительных команд для сборки приложения React. Heroku автоматически устанавливает и запускает скрипт build из файла package.json (если он находится в корне проекта).

0 голосов
/ 31 октября 2019

Я нашел способ сделать это.
Я добавил сборку пакета nodejs в качестве первого, а затем я создал файл package.json в корневом каталоге:

{
  "name": "myapp",
  "version": "1.0.0",
  "scripts": {
    "build": "cd react && npm install && npm run build"
  },
  "dependencies": {},
  "devDependencies": {},
  "cacheDirectories": [
    "node_modules",
    "react/node_modules"
  ]
}

Heroku ищет package.json в каталоге root и автоматически запускает команду build .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...