获取我们在 Firebase 峰会上发布的所有信息,了解 Firebase 可如何帮助您加快应用开发速度并满怀信心地运行应用。了解详情

Administre configuraciones de proyectos con el manifiesto de Extensions

Un manifiesto de extensiones es una lista de instancias de extensión y sus configuraciones. Con el manifiesto, puede:

  • Comparta la configuración de sus extensiones con otros
  • Copie la configuración de sus extensiones entre diferentes proyectos (como de su proyecto de preparación a su proyecto de producción)
  • Implemente todas sus extensiones a la vez
  • Pruebe cómo funcionan sus extensiones con su aplicación usando Firebase Local Emulator Suite
  • Confirme la configuración de sus extensiones para el control de código fuente
  • Incluya extensiones en su canalización de CI/CD

Un manifiesto de extensiones tiene dos partes:

  • La sección de extensions de su firebase.json , que es un mapa de ID de instancia a referencia de versión de extensión. Por ejemplo:

    {
     "extensions": {
       "my-bigquery-extension": "firebase/firestore-bigquery-export@^0.1.18",
       "my-image-resizer": "firebase/storage-resize-images@^0.1.22",
     }
    }
    
  • Archivos .env que contienen la configuración para cada una de sus instancias de extensión, en el subdirectorio extensions/ de su directorio de proyecto de Firebase. Por ejemplo, una instancia de storage-resize-images podría tener un archivo .env como el siguiente:

    IMAGE_TYPE=jpeg
    LOCATION=us-central1
    IMG_BUCKET=${param:PROJECT_ID}.appspot.com
    IMG_SIZES=100x100
    DELETE_ORIGINAL_FILE=false

Crear un manifiesto de extensiones

Hay tres formas de crear un manifiesto de extensiones:

  • Administre su manifiesto de extensiones con Firebase CLI
  • Exportar la configuración de extensiones de un proyecto
  • Edite los archivos de manifiesto manualmente

Los dos primeros métodos se explican a continuación.

Administre su manifiesto de extensiones con Firebase CLI

Puede ejecutar la mayoría de los comandos ext: de Firebase CLI con la opción --local para actualizar el manifiesto de extensiones sin cambiar la configuración actual del proyecto.

Por ejemplo:

firebase ext:install --local firebase/firestore-bigquery-export

Ejecutar el comando anterior le pedirá que configure la última versión de firebase/firestore-bigquery-export y guarde la configuración en el manifiesto, pero no implementará la configuración en su proyecto.

Aquí hay algunos ejemplos más de comandos que modifican el manifiesto de extensiones:

# ext:configure changes the params for an extension instance in your extensions manifest
$ firebase ext:configure my-bigquery-extension --local

# ext:update --local updates an instance in your extensions manifest
# to the latest version of that extension
$ firebase ext:update my-bigquery-extension --local

# You can also specify a version if you don't want to update to the latest version
$ firebase ext:update my-bigquery-extension firebase/firestore-bigquery-export@0.1.10 --local 

# ext:uninstall --local removes an instance from your extensions manifest
$ firebase ext:uninstall my-bigquery-extension --local

Exportar la configuración de extensiones de un proyecto

Para guardar la configuración de extensiones actual de un proyecto en el manifiesto, haga lo siguiente:

  1. Si aún no lo ha hecho, configure Firebase CLI
  2. Desde un indicador de shell, cambie al directorio del proyecto. (El directorio de su proyecto contiene el archivo firebase.json ).
  3. Ejecute el comando ext:export :
    firebase ext:export

El comando ext:export agregará una sección de extensions al archivo firebase.json . Además, el comando ext:export crea un directorio de extensions que contiene un archivo .env para cada instancia de extensión que haya instalado. Estos archivos contienen los parámetros de configuración para cada instancia.

Probar una configuración de extensiones con Firebase Local Emulator Suite

Una vez que haya agregado algunas instancias de extensión a su manifiesto de extensiones, puede probarlas con Local Emulator Suite.

  1. Instale y configure Local Emulator Suite .

  2. Inicie el conjunto de emuladores locales :

    • Para ejecutar Emulator Suite de forma interactiva, ejecuta: firebase emulators:start
    • Para ejecutar Emulator Suite y ejecutar un script de prueba, ejecuta: firebase emulators:exec my-test.sh

Ahora, si tiene instancias de extensión enumeradas en su manifiesto, Local Emulator Suite descargará el código fuente de esas extensiones a ~/.cache/firebase/extensions . Una vez que se hayan descargado, se iniciará Local Emulator Suite y podrá activar cualquiera de las funciones activadas en segundo plano de las extensiones y conectar su aplicación a Emulator Suite para probar su integración con su aplicación.

Implementar una configuración de extensiones en un proyecto

Una vez que haya agregado algunas instancias de extensión a su manifiesto de extensión, puede implementarlo en un proyecto mediante Firebase CLI. Cuando implementa con un manifiesto de extensiones, instala, actualiza y configura todas las instancias de extensión en el manifiesto en un proyecto a la vez.

Para implementar un manifiesto de extensiones:

  1. Desde un indicador de shell, cambie al directorio que contiene la configuración de extensiones guardada. (Este es el directorio que contiene firebase.json . Si acaba de ejecutar ext:export , ya está en el directorio correcto).
  2. Ejecute el comando de deploy . Si desea implementar las extensiones en un proyecto que no sea el actual, también especifique --project= :
    firebase deploy --only extensions –-project=YOUR_PROJECT_ID

El comando de deploy validará la configuración de cada instancia, le preguntará si desea eliminar cualquier instancia de extensión de su proyecto de destino que no se encuentre en la lista de firebase.json y luego implementará todas sus instancias de extensión.

Configuraciones de extensión específicas del proyecto

Las configuraciones de extensiones guardadas se pueden usar para implementar en varios proyectos diferentes: por ejemplo, un proyecto de prueba y un proyecto de producción. Al hacer esto, es posible que los valores de algunos parámetros deban ser diferentes para cada proyecto. Los archivos .env específicos del proyecto lo hacen posible:

  • Coloque valores de parámetros que difieran entre proyectos en extensions/ EXTENSION_INSTANCE_ID .env. YOUR_PROJECT_ID
  • Coloque los valores de los parámetros compartidos en extensions/ EXTENSION_INSTANCE_ID .env .

A veces, es posible que desee utilizar un valor de parámetro diferente al emular sus extensiones: por ejemplo, es posible que desee proporcionar una clave API de prueba en lugar de una de producción. Coloque estos parámetros en un archivo .local :

  • Coloque los parámetros no secretos que desea usar durante la emulación en extensions/ EXTENSION_INSTANCE_ID .env.local
  • Poner valores de parámetros secretos en extensions/ EXTENSION_INSTANCE_ID .secret.local