Используйте монорепозитории с хостингом приложений

С помощью монорепозиториев вы можете организовать и управлять несколькими проектами в одном каталоге. В этом руководстве описывается, как начать развертывание приложений на базе Nx с помощью App Hosting .

Развертывание монорепозиториев с помощью консоли Firebase

Поддержка Monorepo встроена в графический интерфейс настройки бэкенда в консоли Firebase. Когда в разделе «Параметры развертывания» будет предложено указать корневой каталог, укажите путь к приложению, которое вы хотите развернуть в Monorepo:

Снимок экрана с видом создания бэкэнда консоли

Развертывание монорепозиториев с помощью Firebase CLI

Поддержка Monorepo встроена в процесс настройки бэкенда, вызываемый командой Firebase CLI apphosting:backends:create . После входа в этот процесс и указания выбранного репозитория GitHub вам будет предложено указать корневой каталог вашего приложения относительно вашего репозитория. В этом запросе укажите путь к приложению, которое вы хотите развернуть в Monorepo:

$ firebase apphosting:backends:create --project [project-name]
i  === Import a GitHub repository
✔  Connected with GitHub successfully

? Which GitHub repo do you want to deploy? gh-username/nx-monorepo
? Specify your app's root directory relative to your repository path/to/app

Например, вот ресурсы, которые будут развернуты с учетом следующей структуры проекта Nx и «target-app» в качестве приложения, которое вы хотите создать и развернуть:

.
    ├── lib
    ├── apps
    │   └── target-app
    │       ├── project.json
    │       └── src
    │           └── ...
    ├── nx.json
    ├── package-lock.json
    └── package.json

Корневой каталог приложения относительно вашего репозитория — apps/target-app .

Устранение неполадок при развертывании монорепозитория

  • Если вы оставите поле «корневой каталог» пустым во время настройки бэкэнда, App Hosting все равно сможет собрать и развернуть целевой проект пользователя, если он указан в defaultProject соответствующего файла конфигурации nx.json .
  • Если не указать ни поле «root directory», ни defaultProject , то сборка завершится ошибкой и будет выведено сообщение о том, что App Hosting не может найти целевой проект внутри монорепозитория Nx.
  • Для приложений Nx + Angular необходимо использовать конструктор приложений Angular . Конструктор приложений Angular указан в project.json