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