Für Entwickler, die Funktionen lieber in TypeScript schreiben, Cloud Functions bietet zwei Arten von Support:
- TypeScript-Projekte für die automatische Transpilierung bei der Initialisierung erstellen und konfigurieren (
firebase init functions
) - Transpilieren Sie die vorhandene TypeScript-Quelle bei der Bereitstellung mithilfe eines Predeploy-Hooks in JavaScript.
Anhand der Anleitung in diesem Leitfaden können Sie ein vorhandenes JavaScript-Projekt zu TypeScript migrieren und Funktionen mit einem Pre-Deploy-Hook weiter bereitstellen, um Ihren Quellcode zu transpilieren. TypeScript bietet viele Vorteile gegenüber einfachem JavaScript. beim Schreiben von Funktionen:
- TypeScript unterstützt die neuesten JavaScript-Funktionen wie „async“ und „await“, was die Verwaltung von Versprechen vereinfacht.
- Ein Cloud Functions-Linter hebt häufige Probleme beim Programmieren hervor
- Die Typsicherheit hilft Ihnen, Laufzeitfehler in bereitgestellten Funktionen zu vermeiden
Wenn Sie TypeScript noch nicht kennen, sollten Sie sich TypeScript in 5 minutes ansehen.
Neues Cloud Functions-Projekt mit TypeScript initialisieren
Führen Sie firebase init functions
in einem neuen Verzeichnis aus. Das Tool bietet Ihnen Optionen,
das Projekt mit JavaScript oder TypeScript. Wählen Sie TypeScript aus, um die
folgende Projektstruktur erstellen:
myproject
+- functions/ # Directory containing all your functions code
|
+- package.json # npm package file describing your Cloud Functions code
|
+- tsconfig.json
|
+- .eslintrc.js # Optional file if you enabled ESLint
+- tsconfig.dev.json # Optional file that references .eslintrc.js
|
+- src/ # Directory containing TypeScript source
| |
| +- index.ts # main source file for your Cloud Functions code
|
+- lib/
|
+- index.js # Built/transpiled JavaScript code
|
+- index.js.map # Source map for debugging
Sobald die Initialisierung abgeschlossen ist, heben Sie die Kommentarzeichen des Beispiels in "index.ts" auf und führen Sie
npm run serve
, um „Hallo Welt“ anzusehen in Aktion sehen.
Vorhandenes TypeScript-Projekt verwenden
Wenn Sie bereits ein TypeScript-Projekt haben, können Sie
dass Ihr Projekt jedes Mal transpiliert wird, wenn Sie Ihren Code auf
Cloud Functions for Firebase Sie benötigen eine
tsconfig.json
-Datei und ein Firebase-Projekt erstellt haben.
um die folgenden Änderungen an Ihrer Firebase-Konfiguration vorzunehmen:
Bearbeiten Sie
package.json
, um ein Bash-Script zum Erstellen Ihres TypeScript-Projekts hinzuzufügen. Beispiel:{ "name": "functions", "scripts": { "build": "npm run lint && tsc" } ...
Bearbeiten Sie
firebase.json
, um einen Pre-Deploy-Hook zum Ausführen des Build-Skripts hinzuzufügen. Beispiel:{ "functions": { "predeploy": "npm --prefix functions run build", } }
Bei dieser Konfiguration führt ein firebase deploy --only functions
-Befehl
erstellt Ihren TypeScript-Code und stellt ihn als Funktionen bereit.
Vorhandenes JavaScript-Projekt zu TypeScript migrieren
Wenn Sie ein vorhandenes Cloud Functions-Projekt haben, das Sie initialisiert haben und in JavaScript entwickelt wurde, können Sie TypeScript verwenden. Es wird dringend empfohlen, einen Git-Prüfpunkt oder einen anderen Sicherung sichern.
So migrieren Sie ein vorhandenes JavaScript-Cloud Functions-Projekt:
- Erstellen Sie einen Git-Prüfpunkt und speichern Sie Kopien der vorhandenen JavaScript-Quelldateien.
- Führen Sie im Projektverzeichnis
firebase init functions
aus und wählen SieTypeScript
aus, wenn Sie nach einer Sprache zum Schreiben von Funktionen gefragt werden. - Wenn Sie gefragt werden, ob die vorhandene
package.json
-Datei überschrieben werden soll, wählen Sie Nein aus, es sei denn, Sie möchten die vorhandene Datei nicht behalten. - Löschen Sie
index.ts
im Verzeichnisfunctions/src
und ersetzen Sie es durch Ihren vorhandenen Quellcode. - Lege in der bei der Initialisierung erstellten Datei
tsconfig.json
die Compileroptionen fest, um JavaScript zuzulassen:"allowJs": true
. - Kopieren Sie die gespeicherte Datei
package.json
in das Verzeichnisfunctions
und setzen Sie dort"main"
auf"lib/index.js"
. Fügen Sie außerdem in
package.json
ein Build-Skript für TypeScript wie das folgende hinzu:{ "name": "functions", "scripts": { "build": "npm run lint && tsc" } ...
Fügen Sie
"typescript"
als Entwicklungsabhängigkeit hinzu, indem Sienpm install --save-dev typescript @typescript-eslint/eslint-plugin @typescript-eslint/parser
ausführen.Führen Sie für alle Abhängigkeiten
npm install --save @types/<dependency>
aus.Schreiben Sie den Quellcode nach Bedarf von .js in .ts um.
TypeScript-Funktionen emulieren
Um TypeScript-Funktionen lokal zu testen, können Sie die Emulationstools verwenden, die
unter Funktionen lokal ausführen. Es ist wichtig,
Kompilieren Sie Ihren Code, bevor Sie diese Tools verwenden. Führen Sie daher npm run build
aus.
im Funktionsverzeichnis, bevor Sie firebase emulators:start
ausführen oder
firebase functions:shell
Alternativ können Sie npm run serve
ausführen oder
npm run shell
als Kurzbefehl: führen diese Befehle den Build aus und
Funktions-Shell bereitstellen/starten
Funktionsprotokolle für TypeScript-Projekte
Während des firebase deploy
wird der index.ts
Ihres Projekts in index.js
transpiliert.
Das Cloud Functions-Log gibt also die Zeilennummern
index.js
-Datei und nicht den von Ihnen geschriebenen Code. Damit Sie die relevanten Informationen
entsprechende Pfade und Zeilennummern in index.ts
,
firebase deploy
erstellt functions/lib/index.js.map
. Sie können diese Quellkarte in Ihrer bevorzugten IDE oder über ein Knotenmodul verwenden.