Udostępniaj zasoby projektu w wielu witrynach

Możesz skonfigurować jedną lub więcej witryn Firebase Hosting w jednym projekcie Firebase. Ponieważ wszystkie witryny znajdują się w tym samym projekcie Firebase, wszystkie witryny mogą uzyskać dostęp do innych zasobów Firebase projektu.

Konfigurując wiele witryn hostingowych w tym samym projekcie Firebase, możesz łatwiej udostępniać zasoby Firebase pomiędzy powiązanymi witrynami i aplikacjami. Na przykład, jeśli skonfigurujesz swojego bloga, panel administracyjny i aplikację publiczną jako osobne witryny w tym samym projekcie Firebase, wszystkie one będą mogły korzystać z tej samej bazy danych użytkowników Firebase Authentication, mając jednocześnie własne unikalne domeny lub treści.

Krok 1 : Zaktualizuj wersję Firebase CLI

Uzyskaj dostęp do najnowszych funkcji Firebase Hosting , aktualizując do najnowszej wersji Firebase CLI .

Krok 2 : Dodaj dodatkowe witryny

Dodaj dodatkowe witryny do projektu Firebase, korzystając z jednej z następujących metod:

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

  • Użyj polecenia Firebase CLI: firebase hosting:sites:create SITE_ID

  • Skorzystaj z API REST Hostingu: projects.sites.create

Dla każdej z tych metod określisz identyfikator SITE_ID , który będzie używany do tworzenia domyślnych subdomen udostępnianych przez Firebase dla witryny:

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

Ponieważ w przypadku tych adresów URL używany jest SITE_ID , identyfikator witryny ma następujące wymagania:

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

Do każdej witryny możesz także opcjonalnie dodać domeny niestandardowe , aby wyświetlać tę samą treść i konfigurację pod wieloma adresami URL.

Usuń lokację dodatkową

Usuń niechciane witryny z projektu Firebase, korzystając z jednej z następujących metod:

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

  • Użyj polecenia Firebase CLI: firebase hosting:sites:delete SITE_ID

  • Skorzystaj z API REST Hostingu: projects.sites.delete

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

Krok 3 : Skonfiguruj cele wdrażania dla swoich witryn

Jeśli masz wiele witryn i uruchamiasz polecenia wdrażania interfejsu CLI Firebase, interfejs CLI potrzebuje sposobu na przekazanie informacji, które ustawienia powinny zostać wdrożone w każdej witrynie. Dzięki celom wdrażania możesz jednoznacznie zidentyfikować konkretną witrynę za pomocą TARGET_NAME w pliku konfiguracyjnym firebase.json oraz w poleceniach interfejsu CLI Firebase na potrzeby testowania lub wdrażania w swoich witrynach.

Aby utworzyć miejsce docelowe wdrożenia i zastosować TARGET_NAME w witrynie hostingowej, uruchom następującą komendę CLI z katalogu głównego katalogu projektu:

firebase target:apply hosting TARGET_NAME RESOURCE_IDENTIFIER

Gdzie parametry to:

  • TARGET_NAME — unikalna nazwa (samodzielnie zdefiniowana) witryny hostingowej, w której wdrażasz

  • RESOURCE_IDENTIFIERSITE_ID witryny hostingowej wymieniony w projekcie Firebase

Na przykład, jeśli w projekcie Firebase utworzyłeś dwie witryny ( myapp-blog i myapp-app ), możesz zastosować unikalną TARGET_NAME (odpowiednio blog i app ) do każdej witryny, uruchamiając następujące polecenia:

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

Ustawienia celów wdrażania są przechowywane w pliku .firebaserc w katalogu projektu, więc wystarczy skonfigurować cele wdrażania tylko raz na projekt.

Krok 4 : Zdefiniuj konfigurację hostingu dla każdej witryny

Użyj zastosowanego 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 dla jednej witryny, nie ma potrzeby używania formatu tablicy:

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

Krok 5 : Przetestuj lokalnie, przejrzyj zmiany i wdróż je w swoich witrynach

Uruchom dowolne z poniższych poleceń z katalogu głównego lokalnego katalogu projektu.

Komenda Opis
firebase emulators:start --only hosting Emuluje zawartość Hostingu i konfigurację domyślnej witryny Hostingu pod lokalnie hostowanym adresem URL
firebase emulators:start --only hosting: TARGET_NAME Emuluje zawartość hostingu i konfigurację określonej witryny hostingu pod adresem URL hostowanym lokalnie
firebase hosting:channel:deploy \
CHANNEL_ID
Wdraża zawartość hostingu i konfigurację domyślnej witryny hostingu pod adresem URL podglądu
firebase hosting:channel:deploy \
CHANNEL_ID --only TARGET_NAME
Wdraża zawartość hostingu i konfigurację określonej witryny hostingu pod adresem URL podglądu
firebase deploy --only hosting Wdraża zawartość i konfigurację hostingu w kanale na żywo wszystkich witryn hostingowych skonfigurowanych w firebase.json
firebase deploy --only hosting: TARGET_NAME Wdraża zawartość i konfigurację hostingu w kanale na żywo określonej witryny hostingu
Komenda Opis
(niezalecane; zamiast tego użyj emulators:start )
firebase serve --only hosting
Udostępnia zawartość Hostingu i konfigurację domyślnej witryny Hostingu pod lokalnie hostowanym adresem URL
(niezalecane; zamiast tego użyj emulators:start )
firebase serve --only hosting: TARGET_NAME
Udostępnia zawartość Hostingu i konfigurację określonej witryny Hostingu pod lokalnie hostowanym adresem URL