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.

  • Każda witryna ma własną konfigurację hostingu.
  • Każda witryna zawiera własną kolekcję treści.
  • Z każdą witryną może być powiązana co najmniej 1 domena.

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 więcej witryn 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

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

  • Musi być prawidłową etykietą 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 w 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.

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 wdrażania możesz jednoznacznie identyfikować konkretną witrynę za pomocą parametru TARGET_NAMEpliku konfiguracji firebase.json i w Firebasepoleceniach wiersza poleceń, które służą do testowania lub wdrażania w Twoich witrynach.

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

Gdzie 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, dlatego wystarczy, że skonfigurujesz cele wdrożenia 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. Przetestuj lokalnie, wyświetl podgląd zmian i wprowadź wdrożenie 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 domyślnej witryny 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
Wdraża zawartość i konfigurację Hosting domyślnej witryny 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