Ziele bereitstellen

Bereitstellungsziele sind selbst definierte Kurznamen-IDs für Firebase-Ressourcen in Ihrem Firebase-Projekt, wie eine Hosting-Website mit eindeutigen statische Assets oder eine Gruppe von Realtime Database Instanzen mit derselben Sicherheit Regeln.

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

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

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-Befehlszeilenbefehle wie firebase deploy) verknüpft die Firebase-Befehlszeile jede TARGET_NAME mit ihrem zugehörigen Firebase-Ressourcen. Die CLI überträgt dann die Einstellungen für jede Ressource an Ihr Firebase-Projekt.

Bereitstellungsziele für Firebase-Ressourcen einrichten

Wenden Sie über die Firebase-Befehlszeile eine TARGET_NAME (Kurznamen-ID, die (von Ihnen selbst definiert) zu einer Firebase-Ressource oder einer Gruppe von Firebase-Ressourcen. 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 relevante 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

Um ein Bereitstellungsziel zu erstellen und eine TARGET_NAME auf eine Reihe von Cloud Storage- oder Realtime Database-Ressourcen, führen Sie die folgende Befehlszeile aus Befehl:

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

Die Parameter sind:

  • TYPE – der relevante 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), die alle dieselben Sicherheitsregeln haben

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.appspot.com myproject-eu myproject-ja

myproject.appspot.com 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, referenzieren Sie jedes angewendet TARGET_NAME in Ihrem Konfigurationsdatei für firebase.json:

  1. Ein Array von Konfigurationsobjekten für jede Firebase-Ressource TYPE erstellen (hosting, storage oder database).
  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.

Wir setzen auf die Beispiele oben, bei denen Ihr Firebase-Projekt zwei Hosting Websites und drei Cloud Storage-Buckets (mit identischen Werten) Sicherheitsregeln), 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 verknüpften 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 die folgenden Befehle aus dem Stammverzeichnis Ihres Projektverzeichnisses aus.

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 wurde
firebase target:clear \
TYPE TARGET_NAME
Entfernt alle Ressourcen oder Hosting-Website aus dem angegebenen Ziel

Mit den Befehlen target:remove und target:clear wird die Bereitstellung automatisch aktualisiert Zieleinstellungen in der Datei .firebaserc in Ihrem Projektverzeichnis.

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 in Ihrem Projekt Verzeichnis
firebase emulators:start \
--only hosting:TARGET_NAME
Emuliert nur den Hosting-Inhalt und die Konfiguration des angegebene Hosting-Website
firebase emulators:start \
--only storage:TARGET_NAME
Es wird nur die Regeldatei für das angegebene Cloud Storage-Ziel emuliert.
firebase emulators:start \
--only database:TARGET_NAME
Emuliert nur die Regeldatei für das angegebene Realtime Database-Ziel

Erfahren Sie mehr über die Konfiguration und Verwendung der 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 der Hosting-Inhalt und die Konfiguration des angegebene Hosting-Website zum Live-Channel für die Website
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
Stellt nur die Regeldatei für das angegebene Realtime Database-Ziel bereit