Вы можете настроить один или несколько сайтов Firebase Hosting в одном проекте Firebase. Поскольку все сайты находятся в одном проекте 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 и конфигурацию сайта Hosting по умолчанию на локально размещенном URL-адресе. |
firebase emulators:start --only hosting: TARGET_NAME | Эмулирует содержимое Hosting и конфигурацию указанного сайта Hosting по локально размещенному URL-адресу. |
firebase hosting:channel:deploy \ | Развертывает содержимое Hosting и конфигурацию сайта Hosting по умолчанию по URL-адресу предварительного просмотра. |
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 и конфигурацию сайта Hosting по умолчанию на локально размещенном URL-адресе. |
(не рекомендуется; вместо этого используйте emulators:start )firebase serve --only hosting: TARGET_NAME | Обслуживает содержимое Hosting и конфигурацию указанного сайта Hosting по локально размещенному URL-адресу. |