Un manifeste d'extensions est une liste d'instances d'extension et de leurs configurations. Avec le manifeste, vous pouvez :
- Partagez la configuration de vos extensions avec d'autres
- Copiez la configuration de vos extensions entre différents projets (par exemple, de votre projet intermédiaire à votre projet de production)
- Déployez toutes vos extensions en même temps
- Testez le fonctionnement de vos extensions avec votre application à l'aide de la suite d'émulateurs locaux Firebase.
- Validez la configuration de vos extensions dans le contrôle de code source
- Incluez des extensions dans votre pipeline CI/CD
Un manifeste d’extensions comporte deux parties :
La section
extensions
de votrefirebase.json
, qui est une carte de l'ID d'instance à la référence de version de l'extension. Par exemple:{ "extensions": { "my-bigquery-extension": "firebase/firestore-bigquery-export@^0.1.18", "my-image-resizer": "firebase/storage-resize-images@^0.1.22", } }
Fichiers
.env
contenant la configuration de chacune de vos instances d'extension, dans le sous-répertoireextensions/
du répertoire de votre projet Firebase. Par exemple, une instance destorage-resize-images
peut avoir un fichier.env
comme celui-ci :IMAGE_TYPE=jpeg LOCATION=us-central1 IMG_BUCKET=${param:PROJECT_ID}.appspot.com IMG_SIZES=100x100 DELETE_ORIGINAL_FILE=false
Créer un manifeste d'extensions
Il existe trois manières de créer un manifeste d'extensions :
- Gérez le manifeste de vos extensions avec la CLI Firebase
- Exporter la configuration des extensions d'un projet
- Modifier manuellement les fichiers manifestes
Les deux premières méthodes sont expliquées ci-dessous.
Gérez le manifeste de vos extensions avec la CLI Firebase
Vous pouvez exécuter la plupart des commandes ext:
de Firebase CLI avec l'option --local
pour mettre à jour le manifeste des extensions sans réellement modifier la configuration actuelle du projet.
Par exemple:
firebase ext:install --local firebase/firestore-bigquery-export
L'exécution de la commande ci-dessus vous demandera de configurer la dernière version de l'extension firebase/firestore-bigquery-export
et d'enregistrer la configuration dans le manifeste, mais elle ne déploiera pas la configuration sur votre projet.
Voici quelques autres exemples de commandes qui modifient le manifeste des extensions :
# 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
Exporter la configuration des extensions d'un projet
Pour enregistrer la configuration actuelle des extensions d'un projet dans le manifeste, procédez comme suit :
- Si vous ne l'avez pas déjà fait, configurez la CLI Firebase
- À partir d’une invite du shell, accédez au répertoire du projet. (Le répertoire de votre projet contient le fichier
firebase.json
). - Exécutez la commande
ext:export
:firebase ext:export
La commande ext:export
ajoutera une section extensions
au fichier firebase.json
. De plus, la commande ext:export
crée un répertoire extensions
contenant un fichier .env
pour chaque instance d'extension que vous avez installée. Ces fichiers contiennent les paramètres de configuration pour chaque instance.
Tester une configuration d'extensions avec la suite Firebase Local Emulator
Une fois que vous avez ajouté des instances d'extension à votre manifeste d'extensions, vous pouvez les tester à l'aide de Local Emulator Suite.
Démarrez la suite d'émulateurs locaux :
- Pour exécuter Emulator Suite de manière interactive, exécutez :
firebase emulators:start
- Pour exécuter Emulator Suite et exécuter un script de test, exécutez :
firebase emulators:exec my-test.sh
- Pour exécuter Emulator Suite de manière interactive, exécutez :
Désormais, si vous avez des instances d'extension répertoriées dans votre manifeste, Local Emulator Suite téléchargera le code source de ces extensions dans ~/.cache/firebase/extensions
. Une fois qu'ils auront été téléchargés, la suite Emulator locale démarrera et vous pourrez déclencher n'importe quelle fonction déclenchée en arrière-plan des extensions et connecter votre application à la suite Emulator pour tester leur intégration avec votre application.
Déployer une configuration d'extensions sur un projet
Une fois que vous avez ajouté des instances d'extension à votre manifeste d'extension, vous pouvez le déployer sur un projet à l'aide de la CLI Firebase. Lorsque vous déployez avec un manifeste d'extensions, vous installez, mettez à jour et configurez simultanément toutes les instances d'extension du manifeste dans un projet.
Pour déployer un manifeste d'extensions :
- À partir d’une invite du shell, accédez au répertoire contenant la configuration des extensions enregistrées. (Il s'agit du répertoire qui contient
firebase.json
. Si vous venez d'exécuterext:export
, vous êtes déjà dans le bon répertoire.) - Exécutez la commande
deploy
. Si vous souhaitez déployer les extensions sur un projet autre que celui en cours, précisez également--project=
:firebase deploy --only extensions –-project=YOUR_PROJECT_ID
La commande deploy
validera la configuration de chaque instance, vous demandera si vous souhaitez supprimer de votre projet de destination toutes les instances d'extension qui ne sont pas répertoriées dans firebase.json
, puis déploiera toutes vos instances d'extension.
Configurations d'extension spécifiques au projet
Les configurations d'extensions enregistrées peuvent être utilisées pour déployer sur plusieurs projets différents : par exemple, un projet intermédiaire et un projet de production. Ce faisant, certaines valeurs de paramètres peuvent devoir être différentes pour chaque projet. Les fichiers .env
spécifiques au projet rendent cela possible :
- Mettez les valeurs de paramètres qui diffèrent entre les projets dans
extensions/ EXTENSION_INSTANCE_ID .env. YOUR_PROJECT_ID
- Placez les valeurs des paramètres partagés dans
extensions/ EXTENSION_INSTANCE_ID .env
.
Parfois, vous souhaiterez peut-être utiliser une valeur de paramètre différente lors de l'émulation de vos extensions : par exemple, vous souhaiterez peut-être fournir une clé API de test au lieu d'une clé de production. Mettez ces paramètres dans un fichier .local
:
- Mettez les paramètres non secrets que vous souhaitez utiliser lors de l'émulation dans
extensions/ EXTENSION_INSTANCE_ID .env.local
- Mettez les valeurs des paramètres secrets dans
extensions/ EXTENSION_INSTANCE_ID .secret.local