Installer, configurer et intégrer Local Emulator Suite

La Firebase Local Emulator Suite peut être installée et configurée pour différents environnements de prototypes et de test, allant des sessions de prototypage ponctuelles aux workflows d'intégration continue à l'échelle de la production.

Installer la suite d'émulateurs locaux

Avant d'installer Emulator Suite, vous aurez besoin de :

  • Node.js version 8.0 ou supérieure.
  • Java version 1.8 ou supérieure.

Pour installer la suite d'émulateurs :

  1. Installer la Firebase CLI . Si vous ne l' avez pas déjà installé CLI Firebase le, installez - le maintenant . Vous aurez besoin de la version CLI 8.14.0 ou supérieure pour utiliser Emulator Suite. Vous pouvez vérifier la version que vous avez installée à l' aide de la commande suivante:
    firebase --version
  2. Si vous ne l' avez pas déjà fait, initialiser le répertoire de travail en tant que projet Firebase, en suivant les instructions à l' écran pour spécifier les produits à utiliser:
    firebase init
  3. Configurez la suite d'émulateurs. Cette commande démarre un assistant de configuration qui vous permet de sélectionner les émulateurs qui vous intéressent, de télécharger les fichiers binaires de l'émulateur correspondants et de définir les ports de l'émulateur si les valeurs par défaut ne sont pas appropriées.
    firebase init emulators

Une fois qu'un émulateur est installé, aucune vérification de mise à jour n'est effectuée et aucun téléchargement automatique supplémentaire n'aura lieu tant que vous n'aurez pas mis à jour votre version de la CLI de Firebase.

Configurer la suite d'émulateurs

Vous pouvez en option configurer les émulateurs de ports réseau et chemin aux définitions règles de sécurité dans le firebase.json fichier:

  • Modifier les ports de l' émulateur en exécutant firebase init emulators ou en éditant firebase.json manuellement.
  • Modifiez le chemin des définitions Règles de sécurité en modifiant firebase.json manuellement.

Si vous ne configurez pas ces paramètres, les émulateurs écouteront sur leurs ports par défaut et les émulateurs Cloud Firestore, Realtime Database et Cloud Storage fonctionneront avec une sécurité des données ouverte.

Commander La description
init les émulateurs Démarrez un assistant d'initialisation de l'émulateur. Identifiez les émulateurs à installer et spécifiez éventuellement les paramètres du port de l'émulateur. init emulators est non-destructive; accepter les valeurs par défaut conservera la configuration actuelle de l'émulateur.

Configuration des ports

Chaque émulateur se lie à un port différent sur votre machine avec une valeur par défaut préférée.

Émulateur Port par défaut
Authentification 9099
Interface utilisateur de la suite d'émulateurs 4000
Fonctions Cloud 5001
Base de données en temps réel 9000
Cloud Firestore 8080
Stockage en ligne 9199
Hébergement Firebase 5000
Pub/Sub 8085

Configuration des règles de sécurité

Les émulateurs prendront de configuration des règles de sécurité de la database de firestore storage firebase.json database , firestore et storage des clés de configuration dans firebase.json .

{
  // Existing firebase configuration ...
  "database": {
    "rules": "database.rules.json"
  },
  "firestore" {
    "rules": "firestore.rules"
  },
  "storage" {
    "rules": "storage.rules"
  }

  // ...

  // Optional emulator configuration. Default
  // values are used if absent.
  "emulators": {
    "firestore": {
      "port": "8080"
    },
    "ui": {
      "enabled": true,      // Default is `true`
      "port": 4000          // If unspecified, see CLI log for selected port
    },
    "auth": {
      "port": "9099"
    },
    "pubsub": {
      "port": "8085"
    }
  }
}

Démarrer des émulateurs

Vous pouvez démarrer les émulateurs pour qu'ils s'exécutent jusqu'à ce qu'ils soient arrêtés manuellement, ou pour qu'ils s'exécutent pendant la durée d'un script de test désigné, puis s'arrêtent automatiquement.

Commander La description
émulateurs:démarrer Émulateurs départ pour les produits Firebase configurés dans firebase.json . Les processus de l'émulateur continueront de s'exécuter jusqu'à ce qu'ils soient explicitement arrêtés. Appel emulators:start téléchargera émulateurs ~ / .cache / firebase / émulateurs / si elles ne sont pas déjà installés.
Drapeau Description
--only Optionnel. Limitez les émulateurs qui démarrent. Fournissez une liste de noms d'émulateurs séparés par des virgules, en spécifiant un ou plusieurs parmi 'auth', 'database', 'firestore', 'functions', 'hosting' ou 'pubsub'.
--inspect-functions debug_port Optionnel. À utiliser avec l'émulateur Cloud Functions pour activer le débogage des points d'arrêt des fonctions sur le port spécifié (ou le port par défaut 9229 si l'argument est omis). Notez que lorsque cet indicateur est fourni, l'émulateur Cloud Functions bascule vers un mode d'exécution sérialisé spécial dans lequel les fonctions sont exécutées dans un seul processus, dans l'ordre séquentiel (FIFO) ; cela simplifie le débogage des fonctions, bien que le comportement diffère de l'exécution parallèle multiprocessus de fonctions dans le cloud.
--export-on-exit= Optionnel. À utiliser avec l'émulateur d'authentification, Cloud Firestore, Realtime Database ou Cloud Storage. Instruire l'émulateur (s) à exporter des données vers un répertoire lors de l' arrêt se produit, comme décrit pour la emulators:export commande. Le répertoire d'exportation peut être spécifié avec ce drapeau: firebase emulators:start --export-on-exit=./saved-data . Si --import est utilisé, les paramètres par défaut du chemin d'exportation au même; par exemple: firebase emulators:start --import=./data-path --export-on-exit . Enfin, si on le souhaite, passer différents chemins d'accès à la --import et --export-on-exit des drapeaux.
--import= import_directory Optionnel. À utiliser avec l'émulateur d'authentification, Cloud Firestore, Realtime Database ou Cloud Storage. Importer des données sauvegardées en utilisant le --export-on-exit option de démarrage ou emulators:export commande à une authentification en cours d' exécution, Nuage Firestore, Base de données en temps réel ou de l' instance de l' émulateur Cloud Storage. Toutes les données actuellement dans la mémoire de l'émulateur seront écrasées.
émulateurs: exec scriptpath Exécutez le script à scriptpath après le démarrage émulateurs pour les produits Firebase configurés dans firebase.json . Les processus de l'émulateur s'arrêteront automatiquement lorsque le script aura fini de s'exécuter.
Drapeau Description
--only Optionnel. Limitez les émulateurs qui démarrent. Fournissez une liste de noms d'émulateurs séparés par des virgules, en spécifiant un ou plusieurs parmi 'firestore', 'database', 'functions', 'hosting' ou 'pubsub'.
--inspect-functions debug_port Optionnel. À utiliser avec l'émulateur Cloud Functions pour activer le débogage des points d'arrêt des fonctions sur le port spécifié (ou le port par défaut 9229 si l'argument est omis). Notez que lorsque cet indicateur est fourni, l'émulateur Cloud Functions bascule vers un mode d'exécution sérialisé spécial dans lequel les fonctions sont exécutées dans un seul processus, dans l'ordre séquentiel (FIFO) ; cela simplifie le débogage des fonctions, bien que le comportement diffère de l'exécution parallèle multiprocessus de fonctions dans le cloud.
--export-on-exit= Optionnel. À utiliser avec l'émulateur d'authentification, Cloud Firestore, Realtime Database ou Cloud Storage. Instruire l'émulateur (s) à exporter des données vers un répertoire lors de l' arrêt se produit, comme décrit pour la emulators:export commande. Le répertoire d'exportation peut être spécifié avec ce drapeau: firebase emulators:start --export-on-exit=./saved-data . Si --import est utilisé, les paramètres par défaut du chemin d'exportation au même; par exemple: firebase emulators:start --import=./data-path --export-on-exit . Enfin, si on le souhaite, passer différents chemins d'accès à la --import et --export-on-exit des drapeaux.
--import= import_directory Optionnel. À utiliser avec l'émulateur d'authentification, Cloud Firestore, Realtime Database ou Cloud Storage. Importer des données sauvegardées en utilisant le --export-on-exit option de démarrage ou emulators:export commande à une authentification en cours d' exécution, Nuage Firestore, Base de données en temps réel ou de l' instance de l' émulateur Cloud Storage. Toutes les données actuellement dans la mémoire de l'émulateur seront écrasées.
--ui Optionnel. Exécutez l'interface utilisateur de l'émulateur pendant l'exécution.

Les firebase emulators:exec est une méthode plus appropriée pour les processus d'intégration continue.

Exporter et importer des données d'émulateur

Vous pouvez exporter des données à partir des émulateurs d'authentification, Cloud Firestore, Realtime Database et Cloud Storage pour les utiliser comme ensemble de données de base commun partageable. Ces ensembles de données peuvent être importées à l' aide du --import drapeau, comme décrit ci - dessus.

émulateurs: export export_directory

Authentification, Nuage Firestore, Base de données en temps réel ou émulateur Cloud Storage. Exportez des données à partir d'une instance d'émulateur Cloud Firestore, Realtime Database ou Cloud Storage en cours d'exécution. Spécifié export_directory sera créé si elle n'existe pas déjà. Si le répertoire spécifié existe, vous serez invité à confirmer que les données d'exportation précédentes doivent être écrasées. Vous pouvez ignorer cette invite en utilisant le drapeau -force. Le répertoire d'exportation contient un fichier manifeste données, firebase-export-metadata.json .

Vous pouvez demander émulateurs d'exporter des données automatiquement lors de leur arrêt à l' aide des --export-on-exit des drapeaux décrits ci - dessus.

Intégration avec votre système CI

Exécution d'images Emulator Suite conteneurisées

L'installation et la configuration de Emulator Suite avec des conteneurs dans une configuration CI typique sont simples.

Il y a quelques problèmes à noter :

  • Les fichiers JAR sont installés et mis en mémoire cache à ~/.cache/firebase/emulators/ .

    • Vous souhaiterez peut-être ajouter ce chemin à votre configuration de cache CI pour éviter les téléchargements répétés.
  • Si vous ne disposez pas d' un firebase.json fichier dans votre répertoire, vous devez ajouter un argument de ligne de commande pour les emulators:start ou emulators:exec commande pour spécifier les émulateurs doivent être démarrés. Par example,
    --only functions,firestore .

Générer un jeton d'authentification (émulateur d'hébergement uniquement)

Si vos flux de travail d'intégration continue reposent sur Firebase d' hébergement, vous devrez vous connecter en utilisant un jeton pour exécuter firebase emulators:exec . Les autres émulateurs ne nécessitent pas de connexion.

Pour générer un jeton, exécutez firebase login:ci sur votre environnement local; cela ne doit pas être effectué à partir d'un système CI. Suivez les instructions pour vous authentifier. Vous ne devriez avoir besoin d'effectuer cette étape qu'une seule fois par projet, car le jeton sera valide dans toutes les versions. Le jeton doit être traité comme un mot de passe ; assurez-vous qu'il est gardé secret.

Si votre environnement de CI vous permet de spécifier des variables d'environnement qui peuvent être utilisés dans les scripts de compilation, il suffit de créer une variable d'environnement appelée FIREBASE_TOKEN , la valeur étant jeton d' accès chaîne. Le Firebase CLI choisira automatiquement la FIREBASE_TOKEN variable d'environnement et les émulateurs commencera correctement.

En dernier recours, vous pouvez simplement inclure le jeton dans votre script de construction, mais assurez-vous que les parties non fiables n'y ont pas accès. Pour cette approche codée en dur, vous pouvez ajouter --token "YOUR_TOKEN_STRING_HERE" aux firebase emulators:exec commande.

Utiliser l'API REST Emulator Hub

Liste des émulateurs en cours d'exécution

Pour la liste des émulateurs actuellement en cours d' exécution, envoyer un GET demande au /emulators extrémité du Hub Emulator.

curl localhost:4400/emulators

Le résultat sera un objet JSON répertoriant tous les émulateurs en cours d'exécution et leur configuration hôte/port, par exemple :

{
  "hub":{
    "name": "hub",
    "host": "localhost",
    "port": 4400
  },
  "functions": {
    "name": "functions",
    "host": "localhost",
    "port": 5001
  }
  "firestore": {
    "name": "firestore",
    "host": "localhost",
    "port": 8080
  }
}

Activer/désactiver les déclencheurs de fonction d'arrière-plan

Dans certaines situations, vous devrez désactiver temporairement les déclencheurs de fonction locaux. Par exemple , vous pouvez supprimer toutes les données dans l'émulateur sans nuage Firestore déclenchement des onDelete fonctions qui sont en cours d' exécution dans l'émulateur Fonctions Cloud.

Pour désactiver temporairement les déclencheurs de la fonction locale, envoyez une PUT demande aux /functions/disableBackgroundTriggers extrémité du Hub Emulator.

curl -X PUT localhost:4400/functions/disableBackgroundTriggers

Le résultat sera un objet JSON détaillant l'état actuel.

{
  "enabled": false
}

Pour activer les déclencheurs de la fonction locale après avoir été désactivées, envoyer une PUT demande aux /functions/enableBackgroundTriggers extrémité du Hub Emulator.

curl -X PUT localhost:4400/functions/enableBackgroundTriggers

Le résultat sera un objet JSON détaillant l'état actuel.

{
  "enabled": true
}

Intégrations SDK de l'émulateur

Les tableaux de cette section indiquent quels émulateurs sont pris en charge par les SDK client et Admin. Des moyens du futur soutien de l' émulateur est prévu mais pas encore disponible.

Disponibilité du SDK client

Android iOS la toile Interface utilisateur Firebase
Android
Interface utilisateur Firebase
iOS
Interface utilisateur Firebase
la toile
Base de données en temps réel 19.4.0 7.2.0 8.0.0 6.4.0 Futur N / A
Cloud Firestore 21.6.0 7.2.0 8.0.0 6.4.0 Futur N / A
Authentification 20.0.0 7.0.0 8.0.0 7.0.0 Futur Futur
Stockage en ligne 20.0.0 8.0.0 8.4.0 N / A N / A N / A
Fonctions Cloud 19.1.0 7.2.0 8.0.0 N / A N / A N / A
Hébergement N / A N / A N / A N / A N / A N / A

Disponibilité du SDK administrateur

Nœud Java Python Va
Base de données en temps réel 8.6.0 6.10.0 2.18.0 Futur
Cloud Firestore 8.0.0 6.10.0 3.0.0 1.0.0
Authentification 9.3.0 Futur Futur Futur
Stockage en ligne 9.8.0 Futur Futur Futur
Fonctions Cloud N / A N / A N / A N / A
Hébergement N / A N / A N / A N / A