Implementar objetivos

Los objetivos de implementación son identificadores de nombres cortos (que usted mismo define) para los recursos de Firebase en su proyecto de Firebase, como un sitio de hosting con recursos estáticos únicos o un grupo de instancias de Realtime Database que comparten las mismas reglas de seguridad.

Los destinos de implementación son útiles cuando tienes varios sitios de alojamiento , varios depósitos de Cloud Storage o varias instancias de Realtime Database . Con los objetivos de implementación, Firebase CLI puede implementar configuraciones en un recurso o grupo de recursos de Firebase específico en su proyecto, como:

  • La configuración de hosting para cada uno de tus sitios de Hosting
  • Activos estáticos de su directorio de proyectos para cada uno de sus sitios de Hosting
  • Reglas de seguridad compartidas por varias instancias de Realtime Database o varios depósitos de Cloud Storage

Para configurar un destino de implementación:

  1. Aplique un TARGET_NAME al recurso de Firebase o al grupo de recursos de Firebase de destino.
  2. En su archivo firebase.json , haga referencia al TARGET_NAME asociado cuando esté configurando los ajustes para cada recurso o grupo de recursos.

Cuando ejecutas comandos de Firebase CLI (como firebase deploy ), Firebase CLI empareja cada TARGET_NAME con sus recursos de Firebase asociados. Luego, la CLI comunica a su proyecto de Firebase la configuración de cada recurso.

Configura objetivos de implementación para tus recursos de Firebase

Con Firebase CLI, aplique un TARGET_NAME (identificador de nombre corto que usted mismo define) a un recurso de Firebase o un grupo de recursos de Firebase. Firebase admite objetivos de implementación para:

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.

Configurar objetivos de implementación para Hosting

Para crear un destino de implementación y aplicar un TARGET_NAME a un sitio de alojamiento, ejecute el siguiente comando CLI:

firebase target:apply TYPE TARGET_NAME RESOURCE_IDENTIFIER

Donde los parámetros son:

  • TYPE : el tipo de recurso de Firebase relevante

    • Para sitios de Firebase Hosting, utilice hosting .
  • TARGET_NAME : un nombre único 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

Configurar objetivos 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, ejecute el siguiente comando CLI:

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

Donde los parámetros son:

  • TYPE : el tipo de recurso de Firebase relevante

    • Para depósitos de Cloud Storage, use storage .
    • Para instancias de Realtime Database, utilice database .
  • TARGET_NAME : un nombre único para el recurso o grupo de recursos que comparten reglas de seguridad.

  • RESOURCE_IDENTIFIER : los identificadores de los recursos que figuran en su proyecto de Firebase (como nombres de depósitos de almacenamiento o ID de instancias de bases de datos) que comparten las mismas reglas de seguridad.

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

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

Tenga en cuenta que myproject.appspot.com es el identificador del depósito predeterminado, mientras que myproject-eu y myproject-ja son dos depósitos adicionales creados en el proyecto de Firebase.

Configure su archivo firebase.json para usar objetivos de implementación

Después de configurar los objetivos de implementación para tus recursos de Firebase, haz referencia a cada TARGET_NAME aplicado en tu archivo de configuración firebase.json :

  1. Cree una matriz de objetos de configuración para cada TYPE de recurso de Firebase ( hosting , storage o database ).
  2. En las matrices, especifique el target (usando TARGET_NAME ) y defina su configuración para el recurso o grupo de recursos de Firebase asociado.

Continuando con los ejemplos anteriores, donde su proyecto Firebase tiene dos sitios de Hosting y tres depósitos de Cloud Storage (que comparten las mismas reglas de seguridad), su archivo firebase.json se vería así:

{
  "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 tiene varias configuraciones para sus recursos, puede crear varios destinos de implementación y especificar cada uno en el archivo firebase.json . Todos los recursos asociados se implementarán juntos cuando ejecute firebase deploy .

Administrar objetivos de implementación

La configuración para los objetivos de implementación se almacena en el archivo .firebaserc en el directorio de su proyecto. Puede administrar los objetivos de implementación de su proyecto ejecutando cualquiera de los siguientes comandos desde la raíz del directorio de su proyecto.

Dominio Descripción
firebase target Enumera los objetivos de implementación para el directorio de su proyecto actual
firebase target:remove \
TYPE RESOURCE_IDENTIFIER
Elimina un recurso del objetivo al que ha sido asignado
firebase target:clear \
TYPE TARGET_NAME
Elimina todos los recursos o el sitio de alojamiento del destino especificado

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

Pruebe localmente antes de implementar

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

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

Obtenga más información sobre cómo configurar y usar Firebase Local Emulator Suite .

Implementar recursos específicos de Firebase

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

Dominio Descripción
firebase deploy Crea una versión de todos los recursos implementables en el directorio de su proyecto.
firebase deploy \
--only hosting: TARGET_NAME
Implementa solo el contenido de Hosting y la configuración del sitio de Hosting especificado en el canal en vivo del sitio.
firebase hosting:channel:deploy CHANNEL_ID \
--only TARGET_NAME
Implementa solo el contenido de Hosting y la configuración del sitio de Hosting especificado en un canal de vista previa para el sitio.
firebase deploy \
--only storage: TARGET_NAME
Implementa solo el archivo de reglas para el destino de Cloud Storage especificado.
firebase deploy \
--only database: TARGET_NAME
Implementa solo el archivo de reglas para el destino de Realtime Database especificado