Catch up on everything we announced at this year's Firebase Summit. Learn more

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

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

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

Шаг 1: Обновите версию Firebase CLI

Доступ к самой последней Firebase хостинг возможности по обновлению до последней версии Firebase CLI .

Шаг 2: Добавление дополнительных сайтов

Добавьте дополнительные сайты в проект Firebase одним из следующих способов:

  • Использование рабочего процесса в хостинг странице консоли Firebase

  • Используйте команду Firebase CLI: firebase hosting:sites:create SITE_ID

  • Используйте хостинг REST API: projects.sites.create

Для каждого из этих методов, вы будете указать SITE_ID , который используется для построения Firebase-инициализированы поддоменов по умолчанию для сайта:

  • SITE_ID .web.app
  • SITE_ID .firebaseapp.com

Поскольку SITE_ID используется для этих URL - адресов, идентификатор сайта имеет следующие требования:

  • Должно быть действительной меткой имя хоста, то есть он не может содержать . , _ , И т.д.
  • Должно быть не более 30 символов.
  • Должен быть глобально уникальным в Firebase

Для каждого сайта, вы можете также необязательно добавлять пользовательские домены для обслуживания того же содержания и конфигурации для нескольких URL - адресов.

Удалить дополнительный сайт

Удалите нежелательные сайты из проекта Firebase одним из следующих способов:

  • Использование рабочего процесса в хостинг странице консоли Firebase

  • Используйте команду Firebase CLI: firebase hosting:sites:delete SITE_ID

  • Используйте хостинг REST API: projects.sites.delete

Обратите внимание , что вы не можете удалить узел по умолчанию, который имеет тот же SITE_ID как ваш Firebase проекта ID.

Шаг 3: Настройка Deploy цели для ваших сайтов

Когда у вас несколько сайтов и вы запускаете команды развертывания 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

Установки для Deploy целей сохраняются в .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-адресу.