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

Вы можете настроить один или несколько сайтов 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.json и в командах командной строки Firebase для тестирования или развертывания на ваших сайтах.

Чтобы создать цель развертывания и применить TARGET_NAME к сайту размещения, выполните следующую команду CLI из корня каталога вашего проекта:

firebase target:apply hosting TARGET_NAME RESOURCE_IDENTIFIER

Где параметры:

  • TARGET_NAME — уникальное имя (которое вы определили сами) для сайта хостинга, на который вы развертываете

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