Mit einer zusätzlichen Konfiguration können Sie auf den grundlegenden Framework-sensitive Befehlszeilenfunktionalität um die Integrationsunterstützung auf andere Frameworks als Angular und Next.js auszuweiten.
Hinweis
Bevor Sie Ihre App in Firebase bereitstellen, sehen Sie sich die folgenden Anforderungen und Optionen an:
- Firebase-Befehlszeile 12.1.0 oder höher. Installieren Sie die Befehlszeile mit Ihrer bevorzugten Methode.
- Optional: Abrechnung für Ihr Firebase-Projekt aktiviert (erforderlich, wenn Sie SSR nutzen möchten)
Firebase initialisieren
Initialisieren Sie zuerst Firebase für Ihr Framework-Projekt.
Verwenden Sie die Firebase CLI für ein neues Projekt oder ändern Sie firebase.json
für ein vorhandenes Projekt.
Neues Projekt initialisieren
- Aktivieren Sie in der Firebase-Befehlszeile die Vorschau der Web-Frameworks:
firebase experiments:enable webframeworks
Führen Sie den Initialisierungsbefehl über die Befehlszeile aus und folgen Sie dann den Eingabeaufforderungen:
firebase init hosting
Antworten Sie auf „Möchten Sie ein Web-Framework verwenden? (experimentell)“
Wählen Sie Ihr Quellverzeichnis für das Hosting aus: könnte es sich um eine vorhandene Web-App handeln.
Wenn Sie dazu aufgefordert werden, wählen Sie „Express.js / benutzerdefiniert“ aus.
Vorhandenes Projekt initialisieren
Ändern Sie Ihre Hosting-Konfiguration in firebase.json
so, dass eine source
-Option angezeigt wird,
als die Option public
. Beispiel:
{
"hosting": {
"source": "./path-to-your-express-directory"
}
}
Statische Inhalte bereitstellen
Bevor Sie statische Inhalte bereitstellen, müssen Sie Ihre Anwendung konfigurieren.
Konfigurieren
Damit die Firebase CLI weiß, wie Ihre Anwendung bereitgestellt werden soll, muss sie sowohl Ihre App erstellen als auch wissen, wo Ihre Tools die für Hosting bestimmten Assets ablegen. Das erreichen Sie mit dem npm-Build-Skript und CJS
Verzeichnisanweisung in package.json
.
Mit der folgenden package.json-Datei:
{
"name": "express-app",
"version": "0.0.0",
"scripts": {
"build": "spack",
"static": "cp static/* dist",
"prerender": "ts-node prerender.ts"
},
…
}
Die Firebase-Befehlszeile ruft nur Ihr Build-Script auf. Sie müssen also dafür sorgen, dass es vollständig ist.
{
"name": "express-app",
"version": "0.0.0",
"scripts": {
"build": "spack && npm run static && npm run prerender",
"static": "cp static/* dist",
"prerender": "ts-node prerender.ts"
},
…
}
Wenn Ihr Framework kein vorkonfiguriertes Pre-Rendering unterstützt, verwenden Sie ein wie Rendertron, Mit Rendertron können Sie Headless-Chrome-Anfragen an eine lokale Instanz Ihrer App senden und die resultierende HTML-Datei speichern, um sie auf Hosting bereitzustellen.
Schließlich speichern verschiedene Frameworks und Build-Tools ihre Artefakte in unterschiedlichen
an unterschiedlichen Orten. Mit directories.serve
teilen Sie der Befehlszeile mit, wo sich Ihr Build-Skript befindet
Ausgabe der resultierenden Artefakte:
{
"name": "express-app",
"version": "0.0.0",
"scripts": {
"build": "spack && npm run static && npm run prerender",
"static": "cp static/* dist",
"prerender": "ts-node prerender.ts"
},
"directories": {
"serve": "dist"
},
…
}
Bereitstellen
Nachdem Sie Ihre App konfiguriert haben, können Sie mit der Standard- Bereitstellungsbefehl:
firebase deploy
Dynamischen Inhalt bereitstellen
Damit Ihre Express-App auf Cloud Functions for Firebase bereitgestellt werden kann, muss Ihre Express-App (oder URL-Handler im Express-Stil) so exportiert wird, dass Firebase sie finden kann. nachdem Ihre Bibliothek mit NPM verpackt wurde.
Dazu muss die files
-Anweisung alles enthalten,
die für den Server benötigt werden
und der Haupteinstiegspunkt korrekt eingerichtet ist,
package.json
:
{
"name": "express-app",
"version": "0.0.0",
"scripts": {
"build": "spack && npm run static && npm run prerender",
"static": "cp static/* dist",
"prerender": "ts-node tools/prerender.ts"
},
"directories": {
"serve": "dist"
},
"files": ["dist", "server.js"],
"main": "server.js",
...
}
Exportieren Sie Ihre Express-App aus einer Funktion namens app
:
// server.js
export function app() {
const server = express();
…
return server;
}
Wenn Sie lieber einen URL-Handler im Express-Stil exportieren möchten, nennen Sie ihn handle
:
export function handle(req, res) {
res.send(‘hello world’);
}
Bereitstellen
firebase deploy
Dadurch werden Ihre statischen Inhalte auf Firebase Hosting bereitgestellt und Firebase kann auf Ihre Express-App zurückgreifen, die auf Cloud Functions for Firebase gehostet wird.
Optional: In Firebase Authentication einbinden
Die auf dem Web-Framework basierenden Firebase-Bereitstellungstools halten Client
mit dem Serverstatus synchron. Um auf den Authentifizierungskontext zuzugreifen,
Das Express-res.locals
-Objekt enthält optional ein authentifiziertes Firebase-Objekt
App-Instanz (firebaseApp
) und der aktuell angemeldete Nutzer (currentUser
).