Współdziel zasoby projektu w wielu witrynach

W jednym projekcie Firebase możesz skonfigurować co najmniej 1 witrynę Firebase Hosting. Ponieważ wszystkie witryny znajdują się w tym samym projekcie Firebase, mogą one korzystać z 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 aplikację publiczną jako osobne witryny w tym samym projekcie Firebase, wszystkie te witryny mogą korzystać z tej samej Firebase Authentication bazy danych użytkowników, a jednocześnie mieć własne unikalne 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 i usługi bezserwerowe > Hosting w 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 określisz SITE_ID, który jest używany do tworzenia domyślnych subdomen udostępnianych przez Firebase dla witryny:

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

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

  • Musi być prawidłową etykietą nazwy hosta, co oznacza, że nie może zawierać znaków ., _ itp.
  • Musi mieć maksymalnie 30 znaków.
  • Musi być unikalny w skali globalnej w Firebase.

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

Usuwanie witryny dodatkowej

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

  • Użyj przepływu pracy na stronie Hosting i usługi bezserwerowe > Hosting w konsoli Firebase.

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

  • Użyj interfejsu API RESTHosting: projects.sites.delete

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

Krok 3. Skonfiguruj cele wdrożenia dla swoich witryn

Gdy masz wiele witryn i uruchamiasz polecenia wdrożenia interfejsu wiersza poleceń Firebase, interfejs wiersza poleceń musi mieć możliwość określenia, które ustawienia mają zostać wdrożone w każdej witrynie. Dzięki celom wdrożenia możesz jednoznacznie zidentyfikować konkretną witrynę za pomocą TARGET_NAME w pliku konfiguracji firebase.json oraz w poleceniach interfejsu wiersza poleceń Firebase do testowania lub wdrażania w witrynach.

Aby utworzyć cel 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:

  • TARGET_NAME – unikalna nazwa (zdefiniowana przez Ciebie) witryny Hosting , w której wdrażasz.

  • RESOURCE_IDENTIFIERSITE_ID witryny Hosting widoczny w projekcie Firebase

Jeśli na przykład utworzono w projekcie Firebase 2 witryny (myapp-blog i myapp-app), możesz zastosować do każdej z nich unikalną TARGET_NAME (blog i app, odpowiednio), uruchamiają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 cele wdrożenia musisz skonfigurować tylko raz na projekt.

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

Podczas definiowania konfiguracji hostingu witryny w pliku firebase.json użyj zastosowanej 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 definiuje konfigurację tylko 1 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 w 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 Hosting witryny pod adresem URL hostowanym lokalnie
firebase emulators:start --only hosting:TARGET_NAME Emuluje treść i konfigurację Hosting określonej witryny Hosting pod adresem URL hostowanym lokalnie.
firebase hosting:channel:deploy \
CHANNEL_ID
Wdraża treść i konfigurację Hosting Hosting witryny pod adresem URL podglądu.
firebase hosting:channel:deploy \
CHANNEL_ID --only TARGET_NAME
Wdraża treść Hosting i konfigurację określonej witryny Hosting pod adresem URL podglądu.
firebase deploy --only hosting Wdraża treść i konfigurację Hosting w kanale na żywo wszystkich witryn Hosting skonfigurowanych w firebase.json.
firebase deploy --only hosting:TARGET_NAME Wdraża treść i konfigurację Hosting w kanale na żywo określonej witryny Hosting.
Polecenie Opis
(niezalecane; zamiast tego użyj polecenia emulators:start )
firebase serve --only hosting
Wyświetla treść i konfigurację hostingu Hosting witryny domyślnej Hosting pod adresem URL hostowanym lokalnie.
(niezalecane; zamiast tego użyj polecenia emulators:start)
firebase serve --only hosting:TARGET_NAME
Wyświetla treść i konfigurację Hosting określonej witryny Hosting pod adresem URL hostowanym lokalnie.