Check out what’s new from Firebase@ Google I/O 2021, and join our alpha program for early access to the new Remote Config personalization feature. Learn more

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

Вы можете настроить один или несколько сайтов хостинга Firebase в одном проекте Firebase. Поскольку все сайты находятся в одном проекте Firebase, все сайты могут получить доступ к другим ресурсам Firebase проекта.

Настроив несколько хостинговых сайтов в одном проекте Firebase, вы можете более легко обмениваться ресурсами Firebase между связанными сайтами и приложениями. Например, если вы настроили свой блог, панель администратора и общедоступное приложение как отдельные сайты в одном проекте Firebase, все они могут использовать одну и ту же базу данных пользователей Firebase Authentication, а также иметь свои собственные уникальные домены или контент.

Шаг 1. Обновите версию интерфейса командной строки Firebase

Получите доступ к самым последним функциям хостинга Firebase, обновив до последней версии интерфейса командной строки Firebase .

Шаг 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 , что и SITE_ID вашего проекта Firebase.

Шаг 3. Настройте цели развертывания для своих сайтов

Когда у вас несколько сайтов и вы запускаете команды развертывания Firebase CLI, CLI нужен способ сообщить, какие параметры следует развернуть на каждом сайте. С Deploy целями можно однозначно идентифицировать конкретный сайт с TARGET_NAME в вашем firebase.json файл конфигурации и в ваших командах Firebase CLI для тестирования или развертывания ваших сайтов.

Чтобы создать цель развертывания и применить 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 \
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 вместо этого emulators:start )
firebase serve --only hosting
Обслуживает контент и конфигурацию хостинга сайта хостинга по умолчанию по локально размещенному URL-адресу.
(не рекомендуется; используйте emulators:start вместо этого emulators:start )
firebase serve --only hosting: TARGET_NAME
Обслуживает контент и конфигурацию хостинга указанного хостинга по локально размещенному URL-адресу.