Делитесь ресурсами проекта на нескольких сайтах

Вы можете настроить один или несколько сайтов 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_IDENTIFIERSITE_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 \
CHANNEL_ID
Развертывает содержимое Hosting и конфигурацию сайта Hosting по умолчанию по URL-адресу предварительного просмотра.
firebase hosting:channel:deploy \
CHANNEL_ID --only TARGET_NAME
Развертывает содержимое 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-адресу.