Membagikan resource project ke banyak situs

Anda dapat menyiapkan satu atau beberapa situs Firebase Hosting dalam satu project Firebase. Karena semua situs berada dalam project Firebase yang sama, semua situs ini dapat mengakses resource Firebase lain dalam project tersebut.

  • Setiap situs memiliki konfigurasi hosting sendiri.
  • Setiap situs menghosting koleksi kontennya sendiri.
  • Setiap situs dapat memiliki satu atau beberapa domain terkait.

Dengan menetapkan beberapa situs Hosting dalam project Firebase yang sama, Anda bisa lebih mudah membagikan resource Firebase di antara situs dan aplikasi yang terkait. Misalnya, jika blog, panel admin, dan aplikasi publik Anda semuanya ditetapkan sebagai situs individual dalam project Firebase yang sama, maka semuanya dapat berbagi database pengguna Firebase Authentication yang sama, selain juga memiliki domain atau konten uniknya sendiri.

Langkah 1: Update versi Firebase CLI Anda

Akses fitur Firebase Hosting terbaru dengan mengupdate Firebase CLI ke versi terbarunya.

Langkah 2: Tambahkan situs tambahan

Tambahkan situs tambahan ke project Firebase menggunakan salah satu metode berikut:

  • Menggunakan alur kerja di halaman Hosting pada Firebase console

  • Menggunakan perintah Firebase CLI: firebase hosting:sites:create SITE_ID

  • Menggunakan REST API Hosting: projects.sites.create

Untuk setiap metode tersebut, Anda perlu menentukan SITE_ID yang digunakan untuk membuat subdomain default yang disediakan Firebase untuk situs:

  • SITE_ID.web.app
  • SITE_ID.firebaseapp.com

Karena SITE_ID digunakan untuk URL ini, ID situs memiliki persyaratan berikut:

  • Harus berupa label nama host yang valid, artinya tidak boleh berisi ., _, dll.
  • Harus terdiri dari 30 karakter atau kurang
  • Harus unik secara global dalam Firebase

Untuk setiap situs, Anda juga memiliki opsi untuk menambahkan domain kustom yang akan menayangkan konten dan konfigurasi yang sama ke beberapa URL.

Menghapus situs sekunder

Hapus situs yang tidak diinginkan dari project Firebase menggunakan salah satu metode berikut:

  • Menggunakan alur kerja di halaman Hosting pada Firebase console

  • Menggunakan perintah Firebase CLI: firebase hosting:sites:delete SITE_ID

  • Menggunakan REST API Hosting: projects.sites.delete

Perlu diperhatikan bahwa Anda tidak dapat menghapus situs default, yang memiliki SITE_ID yang sama dengan ID project Firebase Anda.

Langkah 3: Siapkan target deploy untuk situs Anda

Jika Anda memiliki beberapa situs dan menjalankan perintah deploy Firebase CLI, CLI memerlukan cara untuk mengomunikasikan setelan yang harus di-deploy ke setiap situs. Dengan target deploy, Anda dapat mengidentifikasi situs tertentu secara unik dengan TARGET_NAME di file konfigurasi firebase.json dan di perintah Firebase CLI untuk menguji atau men-deploy ke situs Anda.

Untuk membuat target deploy dan menerapkan TARGET_NAME ke situs Hosting, jalankan perintah CLI berikut dari direktori root project Anda:

firebase target:apply hosting TARGET_NAME RESOURCE_IDENTIFIER

Dengan parameter:

  • TARGET_NAME — nama unik (yang Anda tetapkan sendiri) untuk situs Hosting yang menjadi tujuan deploy

  • RESOURCE_IDENTIFIERSITE_ID untuk situs Hosting Hostingseperti yang tercantum dalam project Firebase Anda

Misalnya, jika Anda telah membuat dua situs (myapp-blog dan myapp-app) di project Firebase, Anda dapat menerapkan TARGET_NAME yang unik (masing-masing blog dan app) ke setiap situs dengan menjalankan perintah berikut:

firebase target:apply hosting blog myapp-blog
firebase target:apply hosting app myapp-app

Setelan untuk target deploy disimpan di file .firebaserc dalam direktori project Anda, sehingga Anda hanya perlu menyiapkan target deploy sekali per project.

Langkah 4: Tetapkan konfigurasi hosting untuk setiap situs

Gunakan TARGET_NAME yang diterapkan situs saat Anda menentukan konfigurasi hostingnya di file firebase.json.

  • Jika file firebase.json Anda menetapkan konfigurasi untuk beberapa situs, gunakan format array:

    {
      "hosting": [ {
          "target": "blog",  // "blog" is the applied TARGET_NAME for the Hosting site "myapp-blog"
          "public": "blog/dist",  // contents of this folder are deployed to the site "myapp-blog"
    
          // ...
        },
        {
          "target": "app",  // "app" is the applied TARGET_NAME for the Hosting site "myapp-app"
          "public": "app/dist",  // contents of this folder are deployed to the site "myapp-app"
    
          // ...
    
          "rewrites": [...]  // You can define specific Hosting configurations for each site
        }
      ]
    }
  • Jika file firebase.json Anda menetapkan konfigurasi untuk satu situs saja, format array tidak perlu digunakan:

    {
      "hosting": {
          "target": "blog",
          "public": "dist",
    
          // ...
    
          "rewrites": [...]
      }
    }

Langkah 5: Uji secara lokal, pratinjau perubahan, dan deploy ke situs Anda

Jalankan salah satu perintah berikut dari direktori utama project lokal Anda.

Perintah Deskripsi
firebase emulators:start --only hosting Mengemulasi konten dan konfigurasi Hosting untuk situs Hosting default di URL yang dihosting secara lokal
firebase emulators:start --only hosting:TARGET_NAME Mengemulasi konten dan konfigurasi Hosting untuk situs Hosting yang ditentukan di URL yang dihosting secara lokal
firebase hosting:channel:deploy \
CHANNEL_ID
Men-deploy konten dan konfigurasi Hosting untuk situs Hosting default di URL pratinjau
firebase hosting:channel:deploy \
CHANNEL_ID --only TARGET_NAME
Men-deploy konten dan konfigurasi Hosting untuk situs Hosting yang ditentukan di URL pratinjau
firebase deploy --only hosting Men-deploy konten dan konfigurasi Hosting ke saluran live untuk semua situs Hosting yang dikonfigurasi di firebase.json
firebase deploy --only hosting:TARGET_NAME Men-deploy konten dan konfigurasi Hosting ke saluran live untuk situs Hosting yang ditentukan
Perintah Deskripsi
(tidak direkomendasikan; gunakan emulators:start saja)
firebase serve --only hosting
Menayangkan konten dan konfigurasi Hosting untuk situs Hosting default di URL yang dihosting secara lokal
(tidak direkomendasikan; gunakan emulators:start saja)
firebase serve --only hosting:TARGET_NAME
Menayangkan konten dan konfigurasi Hosting untuk situs Hosting yang ditentukan di URL yang dihosting secara lokal