Un manifiesto de extensiones es una lista de instancias de extensión y sus configuraciones. Con el manifiesto, puedes:
- Comparte la configuración de tus extensiones con otros
- Copie la configuración de sus extensiones entre diferentes proyectos (como desde su proyecto de prueba 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 al control de fuente
- Incluya extensiones en su proceso de CI/CD
Un manifiesto de extensiones tiene dos partes:
La sección
extensions
de sufirebase.json
, que es un mapa del ID de la instancia a la referencia de la versión de la 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/
del directorio de su 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 el manifiesto de sus 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 el manifiesto de sus 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 realmente la configuración actual del proyecto.
Por ejemplo:
firebase ext:install --local firebase/firestore-bigquery-export
Al ejecutar el comando anterior, se le pedirá que configure la última versión de la extensión 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 has hecho, configura Firebase CLI
- Desde un símbolo del 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 extensions
al archivo firebase.json
. Además, el comando ext:export
crea un directorio 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.
Pruebe 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 usando Local Emulator Suite.
Inicie el paquete de emuladores locales :
- Para ejecutar Emulator Suite de forma interactiva, ejecute:
firebase emulators:start
- Para ejecutar Emulator Suite y ejecutar un script de prueba, ejecute:
firebase emulators:exec my-test.sh
- Para ejecutar Emulator Suite de forma interactiva, ejecute:
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 implementarlas en un proyecto usando Firebase CLI. Cuando realiza la implementación 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 símbolo del 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
deploy
. Si desea implementar las extensiones en un proyecto distinto al actual, especifique también--project=
:firebase deploy --only extensions –-project=YOUR_PROJECT_ID
El comando deploy
validará la configuración de cada instancia, le preguntará si desea eliminar alguna instancia de extensión de su proyecto de destino que no esté incluida en 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 utilizar para implementar en varios proyectos diferentes: por ejemplo, un proyecto de prueba y un proyecto de producción. Al hacer esto, es posible que algunos valores de 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 desees utilizar un valor de parámetro diferente al emular tus extensiones: por ejemplo, es posible que desees 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 desee utilizar durante la emulación en
extensions/ EXTENSION_INSTANCE_ID .env.local
- Coloque los valores de los parámetros secretos en
extensions/ EXTENSION_INSTANCE_ID .secret.local