Puede 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.
- Cada sitio tiene su propia configuración de alojamiento .
- Cada sitio alberga su propia colección de contenido.
- Cada sitio puede tener uno o más dominios asociados .
Al configurar varios sitios de hospedaje dentro del mismo proyecto de Firebase, puede compartir más fácilmente los 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 : Agregar sitios adicionales
Agregue sitios adicionales a un proyecto de Firebase mediante uno de los siguientes métodos:
Usa el flujo de trabajo en la página Hosting de Firebase console.
Use el comando 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á un SITE_ID
que se usa para construir los subdominios predeterminados proporcionados por Firebase para el sitio:
-
SITE_ID .web.app
-
SITE_ID .firebaseapp.com
Debido a que SITE_ID
se usa para estas URL, la ID del sitio tiene los siguientes requisitos:
- Debe ser una etiqueta de nombre de host válida, lo que significa que no puede contener
.
,_
, 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 servir el mismo contenido y configuración a varias URL.
Eliminar un sitio secundario
Elimine los sitios no deseados de un proyecto de Firebase mediante uno de los siguientes métodos:
Usa el flujo de trabajo en la página Hosting de Firebase console.
Use el comando Firebase CLI:
firebase hosting:sites:delete SITE_ID
Use la API REST de hospedaje:
projects.sites.delete
Tenga en cuenta que no puede eliminar el sitio predeterminado, que tiene el mismo SITE_ID
que su ID de proyecto de Firebase.
Paso 3 : configure destinos 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é configuración debe implementarse en cada sitio. Con los destinos de implementación, puede identificar de manera única un sitio específico con TARGET_NAME
en su archivo de configuración firebase.json
y en los comandos de la CLI de Firebase para probar o implementar en sus sitios.
Para crear un destino de implementación y aplicar TARGET_NAME
a un sitio de hospedaje, 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 ha definido usted mismo) para el sitio de alojamiento que está implementando
RESOURCE_IDENTIFIER : el
SITE_ID
del sitio de hospedaje que figura en su proyecto de Firebase
Por ejemplo, si creó dos sitios ( myapp-blog
y myapp-app
) en su proyecto de Firebase, podría 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 destinos de implementación se almacena en el archivo .firebaserc
en el directorio de su proyecto, por lo que solo necesita configurar los destinos de implementación una vez por proyecto.
Paso 4 : Defina la configuración de alojamiento para cada sitio
Usa el TARGET_NAME
aplicado de un sitio cuando estés definiendo su configuración de hospedaje en tu archivo firebase.json
.
Si su archivo
firebase.json
define la configuración para múltiples 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 de su directorio de proyecto local.
Dominio | Descripción |
---|---|
firebase emulators:start --only hosting | Emula el contenido de Hosting y la configuración del sitio de Hosting predeterminado en una URL alojada localmente |
firebase emulators:start --only hosting: TARGET_NAME | Emula el contenido de Hosting y la configuración del sitio de Hosting especificado en una URL alojada localmente |
firebase hosting:channel:deploy \ | Implementa el contenido de Hosting y la configuración del sitio de Hosting predeterminado en una URL de vista previa |
firebase hosting:channel:deploy \ | Implementa el contenido de alojamiento y la configuración del sitio de alojamiento especificado en una URL de vista previa |
firebase deploy --only hosting | Implementa el contenido y la configuración de hospedaje en el canal en vivo de todos los sitios de hospedaje 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 | Sirve 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 | Sirve el contenido de Hosting y la configuración del sitio de Hosting especificado en una URL alojada localmente |