Join us for Firebase Summit on November 10, 2021. Tune in to learn how Firebase can help you accelerate app development, release with confidence, and scale with ease. Register

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

Вы можете настроить один или несколько сайтов 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-адресу.