Współdziel zasoby projektu w wielu witrynach

W jednym projekcie Firebase możesz skonfigurować jedną lub więcej witryn Hostingu Firebase. Wszystkie witryny znajdują się w tym samym projekcie Firebase, więc wszystkie mają dostęp do pozostałych zasobów Firebase tego projektu.

Skonfigurowanie wielu witryn Hostingu w ramach tego samego projektu Firebase ułatwia udostępnianie zasobów Firebase między powiązanymi witrynami i aplikacjami. Jeśli na przykład skonfigurujesz bloga, panel administracyjny i aplikację publiczną jako osobne witryny w tym samym projekcie Firebase, wszystkie będą mogły korzystać z tej samej bazy danych użytkowników Uwierzytelniania Firebase i mieć własne niepowtarzalne domeny lub treści.

Krok 1. Zaktualizuj wersję interfejsu wiersza poleceń Firebase

Aby uzyskać dostęp do najnowszych funkcji Hostingu Firebase, zaktualizuj interfejs wiersza poleceń Firebase do najnowszej wersji.

Krok 2. Dodaj kolejne witryny

Dodaj więcej witryn do projektu Firebase, korzystając z jednej z tych metod:

  • Użyj przepływu pracy na stronie Hostowanie w konsoli Firebase.

  • Użyj polecenia interfejsu wiersza poleceń Firebase: firebase hosting:sites:create SITE_ID

  • Użyj interfejsu Hosting API typu REST: projects.sites.create

W przypadku każdej z tych metod musisz określić identyfikator SITE_ID, który służy do tworzenia udostępnionych przez Firebase domyślnych subdomen dla witryny:

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

W przypadku tych adresów URL używany jest identyfikator SITE_ID, więc identyfikator witryny spełnia te wymagania:

  • Musi być prawidłową etykietą nazwy hosta, co oznacza, że nie może zawierać ., _ itp.
  • Może mieć nie więcej niż 30 znaków
  • Musi być globalnie unikalne w obrębie Firebase

W każdej witrynie możesz też opcjonalnie dodać domeny niestandardowe, które będą wyświetlać te same treści pod wieloma adresami URL.

Usuwanie witryny dodatkowej

Usuń niechciane witryny z projektu Firebase, korzystając z jednej z tych metod:

  • Użyj przepływu pracy na stronie Hostowanie w konsoli Firebase.

  • Użyj polecenia interfejsu wiersza poleceń Firebase: firebase hosting:sites:delete SITE_ID

  • Użyj interfejsu Hosting API typu REST: projects.sites.delete

Pamiętaj, że nie możesz usunąć witryny domyślnej, która ma taki sam identyfikator SITE_ID co identyfikator projektu Firebase.

Krok 3. Skonfiguruj cele wdrożenia w witrynach

Jeśli masz wiele witryn i uruchomisz polecenia wdrażania interfejsu wiersza poleceń Firebase, interfejs wiersza poleceń musi mieć sposób informowania, które ustawienia należy wdrożyć w każdej witrynie. Dzięki celom wdrożenia możesz jednoznacznie zidentyfikować konkretną witrynę za pomocą TARGET_NAME w pliku konfiguracji firebase.json i w poleceniach interfejsu wiersza poleceń Firebase do testowania lub wdrażania w witrynach.

Aby utworzyć miejsce docelowe wdrożenia i zastosować zasadę TARGET_NAME do witryny w Hostingu, uruchom to polecenie interfejsu wiersza poleceń w katalogu głównym katalogu projektu:

firebase target:apply hosting TARGET_NAME RESOURCE_IDENTIFIER

Gdzie parametry:

  • TARGET_NAME – unikalna nazwa (zdefiniowana przez Ciebie) witryny hostingowej, w której wdrażasz usługę

  • RESOURCE_IDENTIFIERSITE_ID dla witryny w Hostingu zgodnie z danymi w projekcie Firebase

Jeśli np. w projekcie Firebase masz utworzone 2 witryny (myapp-blog i myapp-app), możesz zastosować do każdej z nich unikalną wartość TARGET_NAME (odpowiednio blog i app), uruchamiając te polecenia:

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

Ustawienia celów wdrożenia są przechowywane w pliku .firebaserc w katalogu projektu, dlatego wystarczy, że skonfigurujesz cele wdrożenia tylko raz na projekt.

Krok 4. Określ konfigurację hostingu każdej witryny

Aby określić konfigurację hostingu w pliku firebase.json, użyj zastosowanej do witryny zasady TARGET_NAME.

  • Jeśli plik firebase.json definiuje konfigurację dla wielu witryn, użyj formatu tablicy:

    {
      "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
        }
      ]
    }
    
  • Jeśli plik firebase.json definiuje konfigurację tylko dla 1 witryny, nie musisz używać formatu tablicy:

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

Krok 5. Przetestuj lokalnie, wyświetl podgląd zmian i wprowadź wdrożenie w swoich witrynach

Uruchom dowolne z tych poleceń w katalogu głównym lokalnego projektu.

Polecenie Opis
firebase emulators:start --only hosting Emuluje treść i konfigurację domyślnej witryny Hostingu pod adresem URL hostowanym lokalnie
firebase emulators:start --only hosting:TARGET_NAME Emuluje treść i konfigurację określonej witryny Hostingu pod adresem URL hostowanym lokalnie
firebase hosting:channel:deploy \
CHANNEL_ID
Wdraża zawartość i konfigurację domyślnej Hostingu pod adresem URL podglądu
firebase hosting:channel:deploy \
CHANNEL_ID --only TARGET_NAME
Wdraża zawartość i konfigurację Hostingu określonej witryny Hostingu pod adresem URL podglądu
firebase deploy --only hosting Wdraża zawartość i konfigurację Hostingu w kanale opublikowanym wszystkich witryn Hostingowych skonfigurowanych w firebase.json
firebase deploy --only hosting:TARGET_NAME Wdraża zawartość i konfigurację Hostingu w kanale opublikowanym w określonej witrynie Hostingu
Polecenie Opis
(niezalecane; zamiast tego użyj emulators:start)
firebase serve --only hosting
Udostępnia treści i konfigurację domyślnej witryny Hosting pod adresem URL hostowanego lokalnie
(niezalecane; zamiast tego użyj emulators:start)
firebase serve --only hosting:TARGET_NAME
Obsługuje zawartość i konfigurację określonej witryny Hostingu pod adresem URL hostowanym lokalnie