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 sufirebase.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 subdirectorioextensions/
de su directorio de proyecto de Firebase. Por ejemplo, una instancia destorage-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:
- Si aún no lo ha hecho, configure Firebase CLI
- Desde un indicador de shell, cambie al directorio del proyecto. (El directorio de su proyecto contiene el archivo
firebase.json
). - 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.
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
- Para ejecutar Emulator Suite de forma interactiva, ejecuta:
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:
- 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 ejecutarext:export
, ya está en el directorio correcto). - 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