Google is committed to advancing racial equity for Black communities. See how.
Diese Seite wurde von der Cloud Translation API übersetzt.
Switch to English

Verwenden Sie TypeScript für Cloud-Funktionen

Für Entwickler, die Funktionen lieber in TypeScript schreiben möchten, bietet Cloud Functions zwei Arten der Unterstützung:

  • Erstellen und konfigurieren Sie TypeScript-Projekte für die automatische Transpilation bei der Initialisierung ( firebase init functions ).
  • Transpilieren Sie vorhandene TypeScript-Quellen zur Bereitstellungszeit über einen Pre-Deployment-Hook in JavaScript.

Wenn Sie den Anweisungen in diesem Handbuch folgen, können Sie ein vorhandenes JavaScript-Projekt nach TypeScript migrieren und die Bereitstellung von Funktionen mithilfe eines Pre-Deployment-Hooks fortsetzen, um Ihren Quellcode zu transpilieren. TypeScript bietet beim Schreiben von Funktionen viele Vorteile gegenüber Vanille-JavaScript:

  • TypeScript unterstützt die neuesten JavaScript-Funktionen wie async / await und vereinfacht die Verwaltung von Versprechen
  • Ein Cloud-Funktions-Linter hebt häufige Probleme beim Codieren hervor
  • Mithilfe der Typensicherheit können Sie Laufzeitfehler in bereitgestellten Funktionen vermeiden

Ein funktionierendes Beispiel für in TypeScript geschriebene Cloud-Funktionen finden Sie unter Erste Schritte mit Typoskripten in unserem GitHub-Repo. Wenn Sie TypeScript noch nicht kennen, lesen Sie TypeScript in 5 Minuten .

Initialisieren eines neuen Cloud Functions-Projekts mit TypeScript

Führen Sie firebase init in einem neuen Verzeichnis aus. Das Tool bietet Ihnen Optionen zum Erstellen des Projekts mit JavaScript oder TypeScript. Wählen Sie TypeScript, um die folgende Projektstruktur auszugeben:

 myproject
 +- functions/     # Directory containing all your functions code
      |
      +- package.json  # npm package file describing your Cloud Functions code
      |
      +- tsconfig.json
      |
      +- tslint.json # Optional file
      |
      +- 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
 

Verwenden eines vorhandenen TypeScript-Projekts

Wenn Sie über ein vorhandenes TypeScript-Projekt verfügen, können Sie einen Pre-Deployment-Hook hinzufügen, um sicherzustellen, dass Ihr Projekt jedes Mal transpiliert wird, wenn Sie Ihren Code für Cloud Functions for Firebase bereitstellen. Sie benötigen eine ordnungsgemäß tsconfig.json Datei tsconfig.json und ein Firebase-Projekt und müssen die folgenden Änderungen an Ihrer Firebase-Konfiguration vornehmen:

  1. Bearbeiten Sie package.json , um ein Bash-Skript zum Erstellen Ihres TypeScript-Projekts hinzuzufügen. Beispielsweise:

      {
       "name": "functions",
       "scripts": {
         "build": "./node_modules/.bin/tslint -p tslint.json && ./node_modules/.bin/tsc"
       }
     ...
     
  2. Bearbeiten Sie firebase.json , um einen Pre-Deployment-Hook zum Ausführen des Build-Skripts hinzuzufügen. Beispielsweise:

      {
       "functions": {
         "predeploy": "npm --prefix functions run build",
       }
     }
     

Mit dieser Konfiguration erstellt ein Befehl für firebase deploy --only functions Ihren TypeScript-Code und stellt ihn als Funktionen firebase deploy --only functions .

Migrieren eines vorhandenen JavaScript-Projekts zu TypeScript

Wenn Sie über ein vorhandenes Cloud-Funktionsprojekt verfügen, das Sie in JavaScript initialisiert und entwickelt haben, können Sie es nach TypeScript migrieren. Es wird dringend empfohlen, vor dem Start einen Git-Checkpoint oder ein anderes Backup zu erstellen.

So migrieren Sie ein vorhandenes JavaScript Cloud Functions-Projekt:

  1. Erstellen Sie einen Git-Checkpoint und speichern Sie Kopien Ihrer vorhandenen JavaScript-Quelldateien.
  2. Führen Sie im Projektverzeichnis firebase init functions und wählen Sie TypeScript wenn Sie zur Eingabe einer Sprache zum Schreiben von Funktionen aufgefordert werden.
  3. Wenn Sie gefragt werden, ob die vorhandene Datei package.json überschrieben werden package.json , wählen Sie Nein, es sei denn, Sie sind sicher, dass Sie die vorhandene Datei nicht package.json möchten.
  4. Löschen Sie index.ts im Verzeichnis functions/src und ersetzen Sie es durch Ihren vorhandenen Quellcode.
  5. tsconfig.json der bei der Initialisierung tsconfig.json Datei tsconfig.json die Compileroptionen so fest, dass JavaScript "allowJs": "true" : "allowJs": "true" .
  6. Kopieren Sie Ihre gespeicherte Datei package.json in das functions und bearbeiten Sie sie, um "main" auf "lib/index.js" .
  7. package.json auch in package.json ein Build-Skript für TypeScript wie das folgende hinzu:

      {
       "name": "functions",
       "scripts": {
         "build": "./node_modules/.bin/tslint --project tsconfig.json && ./node_modules/.bin/tsc"
       }
     ...
     
  8. Fügen Sie "typescript" als npm install --save --only=dev tslint typescript indem Sie npm install --save --only=dev tslint typescript .

  9. Führen Sie für alle Abhängigkeiten npm install --save @types/<dependency> .

  10. Schreiben Sie den Quellcode wie gewünscht von .js nach .ts um.

Emulieren von TypeScript-Funktionen

Um Test Typoskript Funktionen lokal, können Sie die Emulation - Tools beschrieben in verwenden Run Funktionen lokal . Es ist wichtig, dass Sie Ihren Code kompilieren, bevor Sie diese Tools verwenden. Stellen Sie daher sicher, dass Sie npm run build in Ihrem Funktionsverzeichnis npm run build bevor Sie firebase emulators:start npm run build firebase emulators:start oder firebase functions:shell . Alternativ können Sie npm run serve oder npm run shell als Verknüpfung npm run shell . Diese Befehle führen sowohl den Build aus als auch die Funktionsshell.

Funktionsprotokolle für TypeScript-Projekte

Während der firebase deploy wird die index.ts Ihres Projekts in index.ts index.js bedeutet, dass das Cloud-Funktionsprotokoll Zeilennummern aus der Datei index.js und nicht den von Ihnen geschriebenen Code index.js . Um Ihnen das Auffinden der entsprechenden Pfade und Zeilennummern in index.ts , erstellt index.ts firebase deploy die functions/lib/index.js.map . Sie können diese Quellzuordnung in Ihrer bevorzugten IDE oder über ein Knotenmodul verwenden .