Menggunakan monorepos dengan App Hosting

Dengan monorepo, Anda dapat mengatur dan mengelola beberapa project dalam satu direktori. Panduan ini menjelaskan cara mulai men-deploy aplikasi berbasis Nx dengan App Hosting.

Men-deploy monorepo dengan Firebase CLI

Dukungan monorepo sudah terintegrasi dalam alur penyiapan backend yang dipanggil oleh perintah Firebase CLI apphosting:backends:create. Setelah memasuki alur ini dan menentukan repositori GitHub yang dipilih, Anda akan diminta untuk menentukan direktori utama aplikasi yang relatif terhadap repositori Anda; pada perintah ini, teruskan jalur ke aplikasi yang ingin Anda deploy di dalam 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

Misalnya, berikut adalah aset yang akan di-deploy berdasarkan struktur project Nx dan "target-app" berikut sebagai aplikasi yang ingin di-build dan di-deploy:

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

Direktori root aplikasi yang relatif terhadap repositori Anda adalah apps/target-app.

Men-deploy monorepo dengan Firebase console

Dukungan monorepo di-build ke dalam alur penyiapan backend grafis di Firebase console. Saat diminta untuk memasukkan "Root directory" di bagian "Deployment settings", tentukan jalur ke aplikasi yang ingin Anda deploy di dalam monorepo:

Screenshot tampilan pembuatan backend konsol

Memecahkan masalah deployment monorepo

  • Jika Anda membiarkan kolom "root directory" kosong selama penyiapan backend, Hosting Aplikasi mungkin masih dapat mem-build dan men-deploy project target pengguna jika ditentukan dalam defaultProject dari file konfigurasi nx.json terkait.
  • Jika Anda tidak menentukan kolom "root directory" atau defaultProject, build akan gagal dan menampilkan pesan bahwa App Hosting tidak dapat menemukan project yang akan ditargetkan di dalam monorepo Nx.
  • Untuk aplikasi Nx + Angular, Anda harus menggunakan builder aplikasi Angular untuk mem-build aplikasi. Builder aplikasi Angular ditentukan di project.json