Ziele bereitstellen

Bereitstellungsziele sind von Ihnen definierte Kurznamen für Firebase-Ressourcen in Ihrem Firebase-Projekt, z. B. eine Hosting-Website mit eindeutigen statischen Assets oder eine Gruppe von Realtime Database-Instanzen mit denselben Sicherheitsregeln.

Bereitstellungsziele sind nützlich, wenn Sie mehrere Hosting-Websites, mehrere Cloud Storage-Buckets oder mehrere Realtime Database-Instanzen haben. Mit Bereitstellungszielen können Sie über die Firebase-Befehlszeile Einstellungen für eine bestimmte Firebase-Ressource oder eine Gruppe von Ressourcen in Ihrem Projekt bereitstellen, z. B.:

  • Die Hostingkonfiguration für jede Ihrer Hosting Websites
  • Statische Assets aus Ihrem Projektverzeichnis für jede Ihrer Hosting-Websites
  • Sicherheitsregeln, die von mehreren Realtime Database-Instanzen oder mehreren Cloud Storage-Buckets gemeinsam genutzt werden

So richten Sie ein Bereitstellungsziel ein:

  1. Wenden Sie eine TARGET_NAME auf die gewünschte Firebase-Ressource oder Gruppe von Firebase-Ressourcen an.
  2. Verweisen Sie in der Datei firebase.json auf die zugehörige TARGET_NAME, wenn Sie die Einstellungen für die einzelnen Ressourcen oder Ressourcengruppen konfigurieren.

Wenn Sie Firebase-Befehle wie firebase deploy ausführen, werden in der Firebase-Befehlszeile alle TARGET_NAME mit den zugehörigen Firebase-Ressourcen verknüpft. Die CLI überträgt dann die Einstellungen für jede Ressource an Ihr Firebase-Projekt.

Bereitstellungsziele für Ihre Firebase-Ressourcen einrichten

Wenden Sie mit der Firebase CLI eine TARGET_NAME (eine von Ihnen definierte Kurznamen-ID) auf eine Firebase-Ressource oder eine Gruppe von Firebase-Ressourcen an. Firebase unterstützt Bereitstellungsziele für:

Die Einstellungen für Bereitstellungsziele werden in der Datei .firebaserc im Projektverzeichnis gespeichert. Sie müssen Bereitstellungsziele also nur einmal pro Projekt einrichten.

Bereitstellungsziele für Hosting einrichten

Führen Sie den folgenden Befehl aus, um ein Bereitstellungsziel zu erstellen und eine TARGET_NAME auf eine Hosting-Website anzuwenden:

firebase target:apply TYPE TARGET_NAME RESOURCE_IDENTIFIER

Die Parameter sind:

  • TYPE – der entsprechende Firebase-Ressourcentyp

    • Verwenden Sie für Firebase Hosting-Websites hosting.
  • TARGET_NAME: Ein eindeutiger Name für die Hosting-Website, auf die Sie bereitstellen

  • RESOURCE_IDENTIFIER: SITE_ID für die Hosting-Website, wie in Ihrem Firebase-Projekt aufgeführt

Wenn Sie beispielsweise zwei Websites (myapp-blog und myapp-app) in Ihrem Firebase-Projekt erstellt haben, können Sie jeder Website eine eindeutige TARGET_NAME (blog bzw. app) zuweisen. Führen Sie dazu die folgenden Befehle aus:

firebase target:apply hosting blog myapp-blog
firebase target:apply hosting app myapp-app

Bereitstellungsziele für Cloud Storage oder Realtime Database einrichten

Führen Sie den folgenden Befehl aus, um ein Bereitstellungsziel zu erstellen und eine TARGET_NAME auf eine Reihe von Cloud Storage- oder Realtime Database-Ressourcen anzuwenden:

firebase target:apply TYPE TARGET_NAME RESOURCE-1_IDENTIFIER RESOURCE-2_IDENTIFIER ...

Die Parameter sind:

  • TYPE – der entsprechende Firebase-Ressourcentyp

    • Verwenden Sie für Cloud Storage-Buckets storage.
    • Verwenden Sie für Realtime Database-Instanzen database.
  • TARGET_NAME: Ein eindeutiger Name für die Ressource oder Gruppe von Ressourcen, die Sicherheitsregeln gemeinsam nutzen.

  • RESOURCE_IDENTIFIER: Die IDs der Ressourcen, die in Ihrem Firebase-Projekt aufgeführt sind (z. B. Speicher-Bucket-Namen oder Datenbankinstanz-IDs), für die alle dieselben Sicherheitsregeln gelten

Sie können beispielsweise die TARGET_NAME von main auf eine Gruppe von drei regionalen Cloud Storage-Buckets anwenden, die alle dieselben Sicherheitsregeln haben. Führen Sie dazu den folgenden Befehl aus:

firebase target:apply storage main myproject.firebasestorage.app myproject-eu myproject-ja

myproject.firebasestorage.app ist die Kennung für den Standard-Bucket. myproject-eu und myproject-ja sind zwei zusätzliche Buckets, die im Firebase-Projekt erstellt wurden.

firebase.json-Datei für die Verwendung von Bereitstellungszielen konfigurieren

Nachdem Sie Bereitstellungsziele für Ihre Firebase-Ressourcen eingerichtet haben, müssen Sie in der Konfigurationsdatei firebase.json auf jede angewendete TARGET_NAME verweisen:

  1. Erstellen Sie für jede Firebase-Ressource TYPE (hosting, storage oder database) ein Array von Konfigurationsobjekten.
  2. Geben Sie in den Arrays die target (mithilfe der TARGET_NAME) an und definieren Sie die Einstellungen für die zugehörige Firebase-Ressource oder ‑Ressourcengruppe.

Anknüpfend an die Beispiele oben, in denen Ihr Firebase-Projekt zwei Hosting-Websites und drei Cloud Storage-Buckets mit denselben Sicherheitsregeln hat, würde Ihre firebase.json-Datei so aussehen:

{
  "hosting": [ {
      "target": "blog",  // "blog" is the applied TARGET_NAME for the Hosting site "myapp-blog"
      "public": "blog/dist",  // contents of this folder are deployed to the site "myapp-blog"

      // ...
    },
    {
      "target": "app",  // "app" is the applied TARGET_NAME for the Hosting site "myapp-app"
      "public": "app/dist",  // contents of this folder are deployed to the site "myapp-app"

      // ...

      "rewrites": [...]  // You can define specific Hosting configurations for each site
    }
  ]
}

{
  "storage": [ {
      "target": "main",  // "main" is the applied TARGET_NAME for the group of Cloud Storage buckets
      "rules": "storage.main.rules"  // the file that contains the shared security rules
    }
  ]
}

Wenn Sie mehrere Konfigurationen für Ihre Ressourcen haben, können Sie mehrere Bereitstellungsziele erstellen und in der Datei firebase.json angeben. Alle zugehörigen Ressourcen werden gemeinsam bereitgestellt, wenn Sie firebase deploy ausführen.

Bereitstellungsziele verwalten

Die Einstellungen für Bereitstellungsziele werden in der Datei .firebaserc in Ihrem Projektverzeichnis gespeichert. Sie können die Bereitstellungsziele Ihres Projekts verwalten, indem Sie einen der folgenden Befehle im Stammverzeichnis Ihres Projektverzeichnisses ausführen.

Befehl Beschreibung
firebase target Listet die Bereitstellungsziele für das aktuelle Projektverzeichnis auf
firebase target:remove \
TYPE RESOURCE_IDENTIFIER
Entfernt eine Ressource aus dem Ziel, dem sie zugewiesen ist.
firebase target:clear \
TYPE TARGET_NAME
Entfernt alle Ressourcen oder die Hosting-Website aus dem angegebenen Ziel

Mit den Befehlen target:remove und target:clear werden die Bereitstellungszieleinstellungen in der Datei .firebaserc im Projektverzeichnis automatisch aktualisiert.

Vor der Bereitstellung lokal testen

Führen Sie einen der folgenden Befehle im Stammverzeichnis Ihres Projektverzeichnisses aus.

Befehl Beschreibung
firebase emulators:start Emuliert alle konfigurierten Ressourcen im Projektverzeichnis
firebase emulators:start \
--only hosting:TARGET_NAME
Nur die Hosting-Inhalte und die Konfiguration der angegebenen Hosting-Website emulieren
firebase emulators:start \
--only storage:TARGET_NAME
Nur die Regelndatei für das angegebene Cloud Storage-Ziel wird emuliert.
firebase emulators:start \
--only database:TARGET_NAME
Es wird nur die Regeldatei für das angegebene Realtime Database-Ziel emuliert.

Weitere Informationen zum Konfigurieren und Verwenden von Firebase Local Emulator Suite

Bestimmte Firebase-Ressourcen bereitstellen

Führen Sie einen der folgenden Befehle im Stammverzeichnis Ihres Projektverzeichnisses aus.

Befehl Beschreibung
firebase deploy Erstellt eine Version aller ausführbaren Ressourcen im Projektverzeichnis.
firebase deploy \
--only hosting:TARGET_NAME
Es werden nur die Hosting-Inhalte und die Konfiguration der angegebenen Hosting-Website auf dem Livekanal für die Website bereitgestellt.
firebase hosting:channel:deploy CHANNEL_ID \
--only TARGET_NAME
Es werden nur die Hosting-Inhalte und die Hosting-Konfiguration der angegebenen Website in einem Vorschaukanal für die Website bereitgestellt.
firebase deploy \
--only storage:TARGET_NAME
Es wird nur die Regelndatei für das angegebene Cloud Storage-Ziel bereitgestellt.
firebase deploy \
--only database:TARGET_NAME
Es wird nur die Regelndatei für das angegebene Realtime Database-Ziel bereitgestellt.