Вы можете настроить один или несколько сайтов 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
Используйте API REST 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
Используйте API REST 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-адресу. |