В одном проекте Firebase можно настроить один или несколько сайтов Firebase Hosting . Поскольку все сайты находятся в одном проекте Firebase, они могут получить доступ к другим ресурсам Firebase этого проекта.
- Каждый сайт имеет свою собственную конфигурацию хостинга .
- На каждом сайте размещена собственная коллекция контента.
- Каждый сайт может иметь один или несколько связанных доменов .
Создав несколько сайтов Hosting в рамках одного проекта Firebase, вы можете упростить совместное использование ресурсов Firebase между связанными сайтами и приложениями. Например, если вы создадите свой блог, панель администратора и общедоступное приложение как отдельные сайты в одном проекте Firebase, они смогут использовать одну и ту же базу данных пользователей Firebase Authentication , при этом имея собственные уникальные домены или контент.
Шаг 1 : Обновите версию Firebase CLI.
Чтобы получить доступ к самым актуальным функциям Firebase Hosting , обновите Firebase CLI до последней версии .
Шаг 2 : Добавьте дополнительные сайты
Добавьте дополнительные сайты в проект Firebase одним из следующих способов:
Используйте алгоритм действий на странице Hosting в консоли Firebase
Используйте команду Firebase CLI:
firebase hosting:sites:create SITE_IDИспользуйте REST API Hosting :
projects.sites.create
Для каждого из этих методов вам потребуется указать SITE_ID , который будет использоваться для создания поддоменов по умолчанию, предоставляемых Firebase для сайта:
-
SITE_ID .web.app -
SITE_ID .firebaseapp.com
Поскольку для этих URL-адресов используется SITE_ID , к идентификатору сайта предъявляются следующие требования:
- Это должна быть допустимая метка имени хоста, то есть она не может содержать точки,
_подчеркивания и т.д. - Не более 30 символов.
- Должно быть уникальным в глобальном масштабе в рамках Firebase.
К каждому сайту также можно дополнительно добавить пользовательские домены , чтобы отображать один и тот же контент и конфигурацию по нескольким URL-адресам.
Удалить дополнительный сайт
Удалите ненужные сайты из проекта Firebase одним из следующих способов:
Используйте алгоритм действий на странице Hosting в консоли Firebase
Используйте команду Firebase CLI:
firebase hosting:sites:delete SITE_IDИспользуйте REST API Hosting :
projects.sites.delete
Обратите внимание, что удалить сайт по умолчанию невозможно, поскольку его SITE_ID совпадает с идентификатором вашего проекта Firebase.
Шаг 3 : Настройте цели развертывания для ваших сайтов.
Когда у вас несколько сайтов и вы запускаете команды развертывания Firebase CLI, CLI необходимо передавать информацию о том, какие настройки следует развернуть на каждом сайте. С помощью целей развертывания вы можете однозначно идентифицировать конкретный сайт с помощью TARGET_NAME в файле конфигурации firebase.json и в командах Firebase CLI для тестирования или развертывания на ваших сайтах.
Чтобы создать целевой объект развертывания и присвоить ему имя TARGET_NAME для Hosting сайта, выполните следующую команду CLI из корневого каталога вашего проекта:
firebase target:apply hosting TARGET_NAME RESOURCE_IDENTIFIER
Где параметры следующие:
TARGET_NAME — уникальное имя (определенное вами самостоятельно) для Hosting сайта, на который вы развертываете приложение.
RESOURCE_IDENTIFIER —
SITE_IDдля Hosting , указанный в вашем проекте Firebase.
Например, если вы создали два сайта ( myapp-blog и myapp-app ) в своем проекте Firebase, вы можете присвоить каждому сайту уникальное TARGET_NAME ( blog и app соответственно), выполнив следующие команды:
firebase target:apply hosting blog myapp-blog
firebase target:apply hosting app myapp-app
Настройки целей развертывания хранятся в файле .firebaserc в каталоге вашего проекта, поэтому вам нужно настроить цели развертывания только один раз для каждого проекта.
Шаг 4 : Определите конфигурацию хостинга для каждого сайта.
Используйте TARGET_NAME присвоенное сайту, при определении конфигурации хостинга в файле firebase.json .
Если в вашем файле
firebase.jsonопределена конфигурация для нескольких сайтов, используйте формат массива:{ "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 } ] }Если в вашем файле
firebase.jsonопределена конфигурация только для одного сайта, использовать формат массива не обязательно:{ "hosting": { "target": "blog", "public": "dist", // ... "rewrites": [...] } }
Шаг 5 : Протестируйте локально, просмотрите изменения и разверните их на своих сайтах.
Выполните любую из следующих команд из корневого каталога вашего локального проекта.
| Командование | Описание |
|---|---|
firebase emulators:start --only hosting | Имитирует содержимое и конфигурацию Hosting по умолчанию на локально размещенном URL-адресе Hosting |
firebase emulators:start --only hosting: TARGET_NAME | Имитирует Hosting и конфигурацию указанного Hosting сайта по локально размещенному URL-адресу. |
firebase hosting:channel:deploy \ | Развертывает содержимое и конфигурацию Hosting по умолчанию на URL-адресе предварительного Hosting . |
firebase hosting:channel:deploy \ | Развертывает Hosting и конфигурацию указанного Hosting сайта по предварительному URL-адресу. |
firebase deploy --only hosting | Развертывает контент и конфигурацию Hosting в рабочем канале всех сайтов Hosting , настроенных в файле firebase.json |
firebase deploy --only hosting: TARGET_NAME | Развертывает контент и конфигурацию Hosting в рабочем канале указанного сайта Hosting . |
| Командование | Описание |
|---|---|
(не рекомендуется; используйте emulators:start вместо этого)firebase serve --only hosting | Предоставляет контент и конфигурацию Hosting по умолчанию по локальному URL-адресу Hosting |
(не рекомендуется; используйте emulators:start вместо этого)firebase serve --only hosting: TARGET_NAME | Hosting контент и конфигурацию указанного Hosting сайта по локально размещенному URL-адресу. |