Join us in person and online for Firebase Summit on October 18, 2022. Learn how Firebase can help you accelerate app development, release your app with confidence, and scale with ease. Register now

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

Оптимизируйте свои подборки Сохраняйте и классифицируйте контент в соответствии со своими настройками.

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