Вы можете настроить один или несколько сайтов Firebase Hosting в одном проекте Firebase. Поскольку все сайты находятся в одном проекте Firebase, все сайты могут получить доступ к другим ресурсам Firebase проекта.
- Каждый сайт имеет свою собственную конфигурацию хостинга .
- На каждом сайте размещена собственная коллекция контента.
- Каждый сайт может иметь один или несколько связанных доменов .
Настроив несколько сайтов Hosting в одном проекте Firebase, вы сможете легче обмениваться ресурсами Firebase между связанными сайтами и приложениями. Например, если вы настроили свой блог, панель администратора и общедоступное приложение как отдельные сайты в одном проекте Firebase, все они могут использовать одну и ту же базу данных пользователей Firebase Authentication , а также иметь свои собственные уникальные домены или контент.
Шаг 1. Обновите версию Firebase CLI.
Получите доступ к новейшим функциям Firebase Hosting , обновив интерфейс командной строки Firebase до последней версии .
Шаг 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 для тестирования или развертывания на ваших сайтах.
Чтобы создать цель развертывания и применить 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-адресу. |