Comparta los recursos del proyecto en varios sitios

Puedes configurar uno o más sitios de Firebase Hosting en un solo proyecto de Firebase. Dado que todos los sitios están en el mismo proyecto de Firebase, todos los sitios pueden acceder a los demás recursos de Firebase del proyecto.

Al configurar varios sitios de Hosting dentro del mismo proyecto de Firebase, puedes compartir más fácilmente recursos de Firebase entre sitios y aplicaciones relacionados. Por ejemplo, si configura su blog, panel de administración y aplicación pública como sitios individuales en el mismo proyecto de Firebase, todos pueden compartir la misma base de datos de usuarios de Firebase Authentication y, al mismo tiempo, tener sus propios dominios o contenido únicos.

Paso 1 : actualice su versión de Firebase CLI

Acceda a las funciones más recientes de Firebase Hosting actualizando a la última versión de Firebase CLI .

Paso 2 : agregue sitios adicionales

Agregue sitios adicionales a un proyecto de Firebase mediante uno de los siguientes métodos:

  • Utilice el flujo de trabajo en la página Alojamiento de Firebase console

  • Utilice el comando de Firebase CLI: firebase hosting:sites:create SITE_ID

  • Utilice la API REST de alojamiento: projects.sites.create

Para cada uno de estos métodos, especificarás un SITE_ID que se usará para construir los subdominios predeterminados proporcionados por Firebase para el sitio:

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

Dado que SITE_ID se utiliza para estas URL, el ID del sitio tiene los siguientes requisitos:

  • Debe ser una etiqueta de nombre de host válida, lo que significa que no puede contener archivos . , _ , etc.
  • Debe tener 30 caracteres o menos.
  • Debe ser globalmente único dentro de Firebase.

Para cada sitio, también puede agregar opcionalmente dominios personalizados para ofrecer el mismo contenido y configuración en varias URL.

Eliminar un sitio secundario

Elimine sitios no deseados de un proyecto de Firebase mediante uno de los siguientes métodos:

  • Utilice el flujo de trabajo en la página Alojamiento de Firebase console

  • Utilice el comando de Firebase CLI: firebase hosting:sites:delete SITE_ID

  • Utilice la API REST de alojamiento: projects.sites.delete

Tenga en cuenta que no puede eliminar el sitio predeterminado, que tiene el mismo SITE_ID que el ID de su proyecto de Firebase.

Paso 3 : configure objetivos de implementación para sus sitios

Cuando tiene varios sitios y ejecuta los comandos de implementación de Firebase CLI, la CLI necesita una forma de comunicar qué configuraciones se deben implementar en cada sitio. Con los objetivos de implementación , puede identificar de forma única un sitio específico con TARGET_NAME en su archivo de configuración firebase.json y en sus comandos de Firebase CLI para probar o implementar en sus sitios.

Para crear un destino de implementación y aplicar un TARGET_NAME a un sitio de alojamiento, ejecute el siguiente comando CLI desde la raíz del directorio de su proyecto:

firebase target:apply hosting TARGET_NAME RESOURCE_IDENTIFIER

Donde los parámetros son:

  • TARGET_NAME : un nombre único (que usted mismo ha definido) para el sitio de alojamiento en el que está implementando

  • RESOURCE_IDENTIFIER : el SITE_ID del sitio de alojamiento que figura en su proyecto de Firebase

Por ejemplo, si creaste dos sitios ( myapp-blog y myapp-app ) en tu proyecto de Firebase, puedes aplicar un TARGET_NAME único ( blog y app , respectivamente) a cada sitio ejecutando los siguientes comandos:

firebase target:apply hosting blog myapp-blog
firebase target:apply hosting app myapp-app

La configuración de los objetivos de implementación se almacena en el archivo .firebaserc en el directorio de su proyecto, por lo que solo necesita configurar los objetivos de implementación una vez por proyecto.

Paso 4 : Defina la configuración de hosting para cada sitio

Utilice el TARGET_NAME aplicado de un sitio cuando defina su configuración de alojamiento en su archivo firebase.json .

  • Si su archivo firebase.json define la configuración para varios sitios, use un formato de matriz:

    {
      "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
        }
      ]
    }
    
  • Si su archivo firebase.json define la configuración para un solo sitio, no es necesario usar un formato de matriz:

    {
      "hosting": {
          "target": "blog",
          "public": "dist",
    
          // ...
    
          "rewrites": [...]
      }
    }
    

Paso 5 : Pruebe localmente, obtenga una vista previa de los cambios e implemente en sus sitios

Ejecute cualquiera de los siguientes comandos desde la raíz del directorio de su proyecto local.

Dominio Descripción
firebase emulators:start --only hosting Emula el contenido de alojamiento y la configuración del sitio de alojamiento predeterminado en una URL alojada localmente
firebase emulators:start --only hosting: TARGET_NAME Emula el contenido de alojamiento y la configuración del sitio de alojamiento especificado en una URL alojada localmente
firebase hosting:channel:deploy \
CHANNEL_ID
Implementa el contenido de alojamiento y la configuración del sitio de alojamiento predeterminado en una URL de vista previa.
firebase hosting:channel:deploy \
CHANNEL_ID --only TARGET_NAME
Implementa el contenido de Hosting y la configuración del sitio de Hosting especificado en una URL de vista previa
firebase deploy --only hosting Implementa el contenido y la configuración de Hosting en el canal en vivo de todos los sitios de Hosting configurados en firebase.json
firebase deploy --only hosting: TARGET_NAME Implementa el contenido y la configuración de Hosting en el canal en vivo del sitio de Hosting especificado.
Dominio Descripción
(no recomendado; use emulators:start en su lugar)
firebase serve --only hosting
Ofrece el contenido de alojamiento y la configuración del sitio de alojamiento predeterminado en una URL alojada localmente.
(no recomendado; use emulators:start en su lugar)
firebase serve --only hosting: TARGET_NAME
Ofrece el contenido de alojamiento y la configuración del sitio de alojamiento especificado en una URL alojada localmente.