App Hosting과 함께 모노레포 사용

모노레포를 사용하면 여러 프로젝트를 한 번에 구성하고 관리할 수 있습니다. 를 참조하세요. 이 가이드에서는 Nx 기반 앱 배포를 시작하는 방법을 설명합니다. App Hosting.

Firebase CLI로 모노 저장소 배포

Firebase가 호출한 백엔드 설정 흐름에서 Monorepo가 기본적으로 지원됩니다. CLI 명령어 apphosting:backends:create 이 흐름에 들어가서 GitHub 저장소를 만들면 앱의 루트를 지정하라는 메시지가 표시됩니다. 디렉터리를 기준으로 지정할 수 있습니다 이 프롬프트에서 monorepo 내에서 배포하려는 애플리케이션을 선택합니다.

$ firebase apphosting:backends:create --project [project-name] --location us-central1
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입니다.

Firebase Console로 모노레포 배포

Monorepo는 Firebase의 그래픽 백엔드 설정 흐름에 빌드됩니다. 살펴보겠습니다 '루트 디렉터리'를 묻는 메시지가 표시되면 '배포 설정'에서 monorepo 내에서 배포할 애플리케이션의 경로를 지정합니다.

Console 백엔드 생성 뷰의 스크린샷

모노레포 배포 문제 해결

  • '루트 디렉터리'를 그대로 두면 백엔드 설정 중에 필드가 비어 있음 다음과 같은 경우 호스팅에서 사용자의 대상 프로젝트를 빌드하고 배포할 수 있습니다. 관련 nx.json의 defaultProject에 지정되어 있습니다. 구성 파일을 참고하세요.
  • '루트 디렉터리'를 지정하지 않는 경우 필드 또는 defaultProject로 설정된 경우 빌드가 실패하고 App Hosting이 Nx 모노레포 내에서 타겟팅할 프로젝트를 찾을 수 없습니다.
  • Nx + Angular 애플리케이션의 경우 Angular 애플리케이션 빌더를 사용하여 애플리케이션을 빌드합니다. 이 Angular 애플리케이션 빌더가 project.json에 지정됩니다.