Współdziel zasoby projektu w wielu witrynach

W jednym projekcie Firebase możesz skonfigurować co najmniej 1 Firebase Hosting witrynę. Ponieważ wszystkie witryny znajdują się w tym samym projekcie Firebase, mogą korzystać z innych zasobów Firebase w tym projekcie.

Konfigurując wiele Hosting witryn w tym samym projekcie Firebase, możesz łatwiej udostępniać zasoby Firebase powiązanym witrynom i aplikacjom. Jeśli na przykład skonfigurujesz bloga, panel administracyjny i aplikację publiczną jako osobne witryny w tym samym projekcie Firebase, wszystkie mogą korzystać z tej samej Firebase Authenticationbazy danych użytkowników, a jednocześnie mieć własne, niepowtarzalne domeny lub treści.

Krok 1. Zaktualizuj wersję interfejsu Firebase CLI

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

Krok 2. Dodaj dodatkowe witryny

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

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

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

  • Użyj interfejsu API REST:projects.sites.createHosting

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 tych adresach URL używany jest znak SITE_ID, 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ć tę samą zawartość i konfigurację pod wieloma adresami URL.

Usuwanie witryny dodatkowej

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

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

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

  • Użyj interfejsu API REST:projects.sites.deleteHosting

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

Krok 3. Skonfiguruj miejsca docelowe wdrożenia witryn

Jeśli masz wiele witryn i uruchamiasz polecenia wdrażania interfejsu wiersza poleceń Firebase, interfejs wiersza poleceń musi mieć możliwość przekazywania informacji o tym, które ustawienia mają być wdrażane w poszczególnych witrynach. Za pomocą miejsc docelowych wdrażania możesz jednoznacznie identyfikować konkretną witrynę za pomocą TARGET_NAME w firebase.jsonpliku konfiguracyjnym i w Firebasepoleceniach interfejsu wiersza poleceń na potrzeby testowania lub wdrażania w witrynach.

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

firebase target:apply hosting TARGET_NAME RESOURCE_IDENTIFIER

Parametry są dostępne w tych miejscach:

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

  • RESOURCE_IDENTIFIER – SITE_ID dla Hosting witryny podanej w projekcie Firebase

Jeśli na przykład w projekcie Firebase masz 2 witryny (myapp-blogmyapp-app), możesz zastosować do każdej z nich unikalny TARGET_NAME (odpowiednio blogapp), wykonując te polecenia:

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

Ustawienia miejsc docelowych wdrażania są przechowywane w pliku .firebaserc w katalogu projektu, więc musisz je skonfigurować tylko raz na projekt.

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

Podczas definiowania konfiguracji hostingu witryny w pliku firebase.json używaj zastosowanego TARGET_NAME witryny.

  • Jeśli plik firebase.json definiuje konfigurację 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 określa konfigurację tylko jednej witryny, nie musisz używać formatu tablicy:

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

Krok 5. Testuj lokalnie, wyświetlaj podgląd zmian i wdrażaj je w swoich witrynach

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

Polecenie Opis
firebase emulators:start --only hosting Emuluje treść i konfigurację Hosting domyślnej witryny Hosting pod lokalnie hostowanym adresem URL.
firebase emulators:start --only hosting:TARGET_NAME Emuluje Hosting zawartość i konfigurację określonej Hosting witryny pod lokalnie hostowanym adresem URL.
firebase hosting:channel:deploy \
CHANNEL_ID
Wdraża Hosting zawartość i konfigurację domyślnej witryny Hosting pod adresem URL podglądu.
firebase hosting:channel:deploy \
CHANNEL_ID --only TARGET_NAME
Wdraża Hosting treść i konfigurację określonej Hosting witryny pod adresem URL podglądu.
firebase deploy --only hosting Wdraża treści Hosting i konfigurację na kanale na żywo wszystkich Hosting witryn skonfigurowanych w firebase.json
firebase deploy --only hosting:TARGET_NAME Wdraża treści i konfigurację Hosting na kanale na żywo określonej Hosting witryny.
Polecenie Opis
(niezalecane; używaj zamiast tego emulators:start)
firebase serve --only hosting
Wyświetla zawartość i konfigurację Hosting domyślnej witryny Hosting pod lokalnie hostowanym adresem URL.
(niezalecane; używaj zamiast tego emulators:start)
firebase serve --only hosting:TARGET_NAME
Wyświetla Hosting zawartość i konfigurację określonej Hosting witryny pod lokalnie hostowanym adresem URL.