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 korzystać z 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 stronie Hosting w konsoli Firebase

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

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

W przypadku każdej z tych metod określisz SITE_ID, który będzie używany 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 stronie Hosting w konsoli Firebase

  • Użyj polecenia interfejsu 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 taki sam identyfikator SITE_ID jak Twój projekt Firebase.

Krok 3. Skonfiguruj miejsca docelowe wdrożenia witryn

Jeśli masz kilka witryn i uruchamiasz polecenia wdrażania interfejsu wiersza poleceń Firebase CLI, 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) Hostingwitryny, w której wdrażasz aplikację.

  • 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 identyfikatora TARGET_NAME.

  • Jeśli plik firebase.json określa 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 żywoHosting określonej 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.