Destinos de implementación

Los destinos de implementación son identificadores con nombres cortos (que tú defines) para los recursos de Firebase de tu proyecto en la plataforma, como sitios de Hosting con recursos estáticos únicos o grupos de instancias de Realtime Database que comparten las mismas reglas de seguridad.

Los destinos de implementación son útiles cuando tienes varios sitios de Hosting, varios buckets de Cloud Storage o varias instancias de Realtime Database. Con estos destinos, Firebase CLI puede implementar una configuración en un recurso o grupo de recursos específico de Firebase de tu proyecto, por ejemplo:

  • La configuración de alojamientos para cada sitio de Hosting
  • Recursos estáticos del directorio de tu proyecto para cada uno de tus sitios de Hosting
  • Reglas de seguridad de varias instancias de Realtime Database o varios depósitos de Cloud Storage

Sigue estos pasos para configurar un destino de implementación:

  1. Aplica un TARGET_NAME al recurso de Firebase o al grupo de recursos de Firebase de destino.
  2. En el archivo firebase.json, crea una referencia al parámetro TARGET_NAME asociado cuando configures cada recurso o grupo de recursos.

Cuando ejecutas los comandos de Firebase CLI (como firebase deploy), Firebase CLI vincula cada TARGET_NAME con sus recursos de Firebase asociados. Luego, la CLI informa a tu proyecto de Firebase la configuración de cada recurso.

Configura destinos de implementación para tus recursos de Firebase

Con Firebase CLI, aplica un parámetro TARGET_NAME (identificador con nombre corto que tú defines) a un recurso o grupo de recursos de Firebase. Firebase admite destinos de implementación para lo siguiente:

La configuración de los destinos de implementación se almacena en el archivo .firebaserc del directorio de tu proyecto, de manera que solo es necesario configurar destinos de implementación una vez por proyecto.

Configura destinos de implementación para Hosting

Si quieres crear un destino de implementación y aplicar un parámetro TARGET_NAME a un sitio de Hosting, ejecuta el siguiente comando de la CLI:

firebase target:apply TYPE TARGET_NAME RESOURCE_IDENTIFIER

Los parámetros correspondientes son los siguientes:

  • TYPE: Es el tipo pertinente de recurso de Firebase.

    • En los sitios de Firebase Hosting, usa hosting.
  • TARGET_NAME: Es un nombre único del sitio de Hosting en el quieres realizar la implementación.

  • RESOURCE_IDENTIFIER: Es el SITE_ID del sitio de Hosting, tal como aparece en tu 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

Configura destinos de implementación para Cloud Storage o Realtime Database

Para crear un destino de implementación y aplicar un TARGET_NAME a un conjunto de recursos de Cloud Storage o Realtime Database, ejecuta el siguiente comando de la CLI:

firebase target:apply TYPE TARGET_NAME RESOURCE-1_IDENTIFIER RESOURCE-2_IDENTIFIER ...

Los parámetros correspondientes son los siguientes:

  • TYPE: Es el tipo pertinente de recurso de Firebase.

    • Usa storage en los depósitos de Cloud Storage.
    • Usa database en las instancias de Realtime Database.
  • TARGET_NAME: Es un nombre único del recurso o grupo de recursos que comparten reglas de seguridad.

  • RESOURCE_IDENTIFIER: Son los identificadores para los recursos tal como se detallan en tu proyecto de Firebase (como nombres de buckets de almacenamiento o ID de instancia de base de datos) que comparten mismas reglas de seguridad.

Por ejemplo, puedes aplicar el TARGET_NAME de main a un grupo de tres buckets regionales de Cloud Storage (que tienen las mismas reglas de seguridad) ejecutando el siguiente comando:

firebase target:apply storage main myproject.appspot.com myproject-eu myproject-ja

Ten en cuenta que myproject.appspot.com es el identificador del bucket predeterminado, mientras que myproject-eu y myproject-ja son dos buckets adicionales creados en el proyecto de Firebase.

Configura tu archivo firebase.json para usar destinos de implementación

Después de configurar los destinos de implementación para tus recursos de Firebase, haz una referencia a cada parámetro TARGET_NAME que se aplicó en tu archivo de configuración firebase.json:

  1. Crea un array de objetos de configuración para cada TYPE de recurso de Firebase (hosting, storage o database).
  2. En los arrays, especifica el target (con el parámetro TARGET_NAME) y define la configuración del recurso o grupo de recursos de Firebase asociados.

Siguiendo con los ejemplos anteriores, si tu proyecto de Firebase tiene dos sitios de Hosting y tres buckets de Cloud Storage (que comparten las mismas reglas de seguridad), tu archivo firebase.json tendrá el siguiente aspecto:

{
  "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
    }
  ]
}

{
  "storage": [ {
      "target": "main",  // "main" is the applied TARGET_NAME for the group of Cloud Storage buckets
      "rules": "storage.main.rules"  // the file that contains the shared security rules
    }
  ]
}

Si tienes varias opciones de configuración para tus recursos, puedes crear varios destinos de implementación y especificar cada uno en el archivo firebase.json. Todos los recursos asociados se implementarán juntos cuando ejecutes firebase deploy.

Administra destinos de implementación

La configuración de los destinos de implementación se almacena en el archivo .firebaserc del directorio de tu proyecto. Puedes administrar los destinos de implementación de tu proyecto mediante la ejecución de cualquiera de los siguientes comandos desde la raíz del directorio de tu proyecto.

Comando Descripción
firebase target Crea una lista de destinos de implementación para el directorio de tu proyecto actual.
firebase target:remove \
TYPE RESOURCE_IDENTIFIER
Quita un recurso del destino al cual se asignó.
firebase target:clear \
TYPE TARGET_NAME
Quita todos los recursos o el sitio de Hosting del destino especificado.

Los comandos target:remove y target:clear actualizan automáticamente la configuración de destino de implementación en el archivo .firebaserc del directorio de tu proyecto.

Realiza pruebas locales antes de implementar

Ejecuta cualquiera de los siguientes comandos desde la raíz del directorio de tu proyecto:

Comando Descripción
firebase emulators:start Emula todos los recursos configurados en el directorio del proyecto.
firebase emulators:start \
--only hosting:TARGET_NAME
Solo emula el contenido y la configuración de Hosting del sitio de Hosting especificado.
firebase emulators:start \
--only storage:TARGET_NAME
Solo emula el archivo de reglas para el destino de Cloud Storage especificado.
firebase emulators:start \
--only database:TARGET_NAME
Solo emula el archivo de reglas para el destino de Realtime Database especificado.

Obtén más información para configurar y usar Firebase Local Emulator Suite.

Implementa recursos específicos de Firebase

Ejecuta cualquiera de los siguientes comandos desde la raíz del directorio de tu proyecto:

Comando Descripción
firebase deploy Crea una versión de todos los recursos del directorio del proyecto que pueden implementarse.
firebase deploy \
--only hosting:TARGET_NAME
Solo implementa el contenido y la configuración de Hosting del sitio de Hosting especificado en el canal activo del sitio.
firebase hosting:channel:deploy CHANNEL_ID \
--only TARGET_NAME
Solo implementa el contenido y la configuración de Hosting del sitio de Hosting especificado en un canal de vista previa del sitio.
firebase deploy \
--only storage:TARGET_NAME
Solo implementa el archivo de reglas para el destino de Cloud Storage especificado.
firebase deploy \
--only database:TARGET_NAME
Solo implementa el archivo de reglas para el destino de Realtime Database especificado.