Współdziel zasoby projektu w wielu witrynach

W jednym projekcie Firebase możesz skonfigurować co najmniej 1 witrynę Firebase Hosting. Wszystkie witryny znajdują się w tym samym projekcie Firebase, więc mają dostęp do innych zasobów Firebase w tym projekcie.

Skonfigurowanie wielu witryn Hosting w tym samym projekcie 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 publiczną aplikację jako osobne witryny w tym samym projekcie Firebase, wszystkie te witryny będą mogły korzystać z tej samej bazy danych użytkowników Firebase Authentication, a jednocześnie będą miały własne domeny lub treści.

Krok 1. Zaktualizuj wersję interfejsu wiersza poleceń Firebase

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

Krok 2. Dodaj dodatkowe witryny

Dodaj dodatkowe witryny do projektu Firebase, korzystając z jednej z tych metod:

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

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

  • Użyj Hostinginterfejsu API REST: projects.sites.create

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

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

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

  • Musi to być prawidłowa etykieta nazwy hosta, co oznacza, że nie może zawierać znaków ., _ itp.
  • Maksymalna liczba znaków to 30.
  • Musi być globalnie niepowtarzalna w Firebase.

Do każdej witryny możesz też opcjonalnie dodać domeny niestandardowe, aby wyświetlać te same treści i konfigurację w przypadku wielu adresów URL.

Usuwanie witryny dodatkowej

Aby usunąć niechciane witryny z projektu Firebase, użyj jednej z tych metod:

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

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

  • Użyj Hostinginterfejsu API REST: projects.sites.delete

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

SITE_ID

Krok 3. Skonfiguruj cele wdrożenia dla swoich witryn

Jeśli masz wiele witryn i uruchamiasz polecenia Firebase w interfejsie wiersza poleceń, interfejs ten musi mieć możliwość określenia, które ustawienia mają zostać zastosowane do każdej witryny. Dzięki celom wdrażania możesz jednoznacznie identyfikować konkretną witrynę za pomocą parametru TARGET_NAMEpliku konfiguracji firebase.json i w poleceniach wiersza poleceń, które służą do testowania lub wdrażania w witrynach.Firebase

Aby utworzyć miejsce docelowe wdrożenia i zastosować TARGET_NAME w witrynie Hosting, uruchom to polecenie wiersza poleceń w katalogu głównym katalogu projektu:

firebase target:apply hosting TARGET_NAME RESOURCE_IDENTIFIER

Parametry:

  • TARGET_NAME – unikalna nazwa (określona przez Ciebie) witryny Hosting, do której wdrażasz treści.

  • RESOURCE_IDENTIFIER – SITE_ID witryny Hosting wymienionej w Twoim projekcie Firebase

Jeśli na przykład w projekcie Firebase utworzysz 2 witryny (myapp-blogmyapp-app), możesz zastosować do każdej z nich unikalny identyfikator TARGET_NAME (odpowiednio blogapp), wykonują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, więc wystarczy je skonfigurować tylko raz na projekt.

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

Używaj pliku TARGET_NAME witryny, gdy definiujesz jej konfigurację hostingu w pliku firebase.json.

  • 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 jednej witryny, nie musisz używać formatu tablicowego:

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

Krok 5. Testuj lokalnie, wyświetl podgląd zmian i wdróż je w swoich witrynach

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

Polecenie Opis
firebase emulators:start --only hosting Emuluje zawartość i konfigurację Hosting witryny domyślnej Hosting w przypadku adresu URL hostowanego lokalnie.
firebase emulators:start --only hosting:TARGET_NAME Emuluje zawartość i konfigurację witryny Hosting pod adresem URL hostowanym lokalnie.Hosting
firebase hosting:channel:deploy \
CHANNEL_ID
Wdrożenie treści i konfiguracji witryny Hosting (domyślnej) Hosting pod adresem URL podglądu.
firebase hosting:channel:deploy \
CHANNEL_ID --only TARGET_NAME
Wskazuje adres URL podglądu Hosting witryny Hosting, na której mają zostać wdrożone treści i konfiguracja Hosting
firebase deploy --only hosting Wdrożenie treści i konfiguracji Hosting na kanale na żywo wszystkich witryn Hosting skonfigurowanych w firebase.json
firebase deploy --only hosting:TARGET_NAME Wdraża treści i konfigurację Hosting na kanale na żywo określonej witryny Hosting
Polecenie Opis
(nie zalecane; użyj zamiast tego emulators:start)
firebase serve --only hosting
Dostarcza zawartość i konfigurację witryny Hosting domyślnej Hosting z adresu URL hostowanego lokalnie.
(nie zalecane; użyj zamiast tego emulators:start)
firebase serve --only hosting:TARGET_NAME
Udostępnia zawartość i konfigurację witryny Hosting pod adresem URL hostowanym lokalnie.Hosting