Join us for Firebase Summit on November 10, 2021. Tune in to learn how Firebase can help you accelerate app development, release with confidence, and scale with ease. Register

Bulut İşlevleri için TypeScript kullanın

TypeScript'te işlev yazmayı tercih eden geliştiriciler için Cloud Functions iki tür destek sağlar:

  • Oluşturun ve başlatma sırasında otomatik transpilation (için yapılandırmak typescript projeleri firebase init functions ).
  • Transpile bir yoluyla dağıtma anda JavaScript typescript kaynağını mevcut predeploy kanca .

Bu kılavuzdaki talimatları izleyerek, mevcut bir JavaScript projesini TypeScript'e geçirebilir ve kaynak kodunuzu aktarmak için bir dağıtım öncesi kanca kullanarak işlevleri dağıtmaya devam edebilirsiniz. TypeScript, işlev yazarken Vanilla JavaScript'e göre birçok avantaj sunar:

  • TypeScript, async/await gibi en yeni JavaScript özelliklerini destekleyerek söz yönetimini basitleştirir
  • Bir Cloud Functions linter, kodlama yaparken sık karşılaşılan sorunları vurgular
  • Tür güvenliği, dağıtılan işlevlerde çalışma zamanı hatalarından kaçınmanıza yardımcı olur

Eğer typescript yeniyseniz, bkz 5 dakika içinde typescript .

TypeScript ile yeni bir Bulut İşlevleri projesi başlatma

Run firebase init functions yeni dizinde. Araç, projeyi JavaScript veya TypeScript ile oluşturma seçenekleri sunar. Çıkışı Aşağıdaki proje yapısı için typescript seçin:

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

Başlatma işlemi tamamlandıktan sonra, index.ts ve çalıştırma uncomment örnek npm run serve eylemde bir "Merhaba Dünya" işlevini görmeye.

Mevcut bir TypeScript projesini kullanma

Mevcut bir TypeScript projeniz varsa, kodunuzu Cloud Functions for Firebase'e her dağıttığınızda projenizin aktarıldığından emin olmak için bir dağıtım öncesi kanca ekleyebilirsiniz. Bir düzgün oluşturulmuş gerekir tsconfig.json dosyası ve Firebase proje ve size Firebase yapılandırma aşağıdaki değişiklikleri yapmak gerekir:

  1. Düzenleme package.json sizin typescript projesini inşa etmek için bir bash komut dosyası eklemek için. Örneğin:

     {
       "name": "functions",
       "scripts": {
         "build": "npm run lint && tsc"
       }
     ...
    
  2. Düzenleme firebase.json yapınızın kodlarını çalıştırmak için bir predeploy kanca ekleyin. Örneğin:

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

Bu yapılandırmada, bir firebase deploy --only functions komutu typescript kodunu oluşturan ve fonksiyonlar olarak dağıtır.

Mevcut bir JavaScript projesini TypeScript'e geçirme

JavaScript'te başlattığınız ve geliştirdiğiniz mevcut bir Bulut İşlevleri projeniz varsa, onu TypeScript'e geçirebilirsiniz. Başlamadan önce bir git kontrol noktası veya başka bir yedek oluşturmanız şiddetle tavsiye edilir.

Mevcut bir JavaScript Bulut İşlevleri projesini taşımak için:

  1. Bir git kontrol noktası oluşturun ve mevcut JavaScript kaynak dosyalarınızın kopyalarını kaydedin.
  2. Proje dizininde, çalıştırmak firebase init functions ve seçmek TypeScript fonksiyonlarını yazmak için bir dil için istendiğinde.
  3. Varolan üzerine yazmak ister istendiğinde package.json dosyasını Emin varolan dosyayı tutmak istemiyoruz olmadıkça, Hayır seçeneğini seçin.
  4. Sil index.ts dizininde functions/src mevcut kaynak kodu ile değiştirilmesi,.
  5. In tsconfig.json : başlatma sırasında oluşturulan dosyanın JavaScript izin derleyici seçeneklerini ayarlamak "allowJs": true .
  6. Kaydedilen Kopya package.json dosyayı functions dizine ve düzenleme o ayarlamak için "main" kadar "lib/index.js" .
  7. Ayrıca package.json , aşağıdaki gibi typescript için bir yapı komut dosyası ekleyin:

     {
       "name": "functions",
       "scripts": {
         "build": "npm run lint && tsc"
       }
     ...
    
  8. Ekle "typescript" çalıştırarak bir dev bağımlılık olarak npm install --save-dev typescript @typescript-eslint/eslint-plugin @typescript-eslint/parser .

  9. Bütün bağımlılıklar için koşmak npm install --save @types/<dependency> .

  10. Kaynak kodunu .js'den .ts'ye istediğiniz gibi yeniden yazın.

TypeScript işlevlerini taklit etme

Yerel testi typescript fonksiyonları için, açıklanan emülasyon araçlarını kullanabilirsiniz yerel Çalıştır fonksiyonları . Bu çalıştırmak için emin olun, böylece bu araçları kullanmadan önce kodunuzu derlemek için önemlidir npm run build çalıştırmadan önce fonksiyonları dizin içinde firebase emulators:start veya firebase functions:shell . Alternatif olarak, çalışma npm run serve veya npm run shell kısayol olarak; bu komutlar hem derlemeyi çalıştırır hem de işlevlerin kabuğunu sunar/başlar.

TypeScript projeleri için işlev günlükleri

Sırasında firebase deploy , projenizin index.ts için transpiled edilir index.js Bulut Fonksiyonlar gelen irade çıktı hattı numaralarını log yani index.js dosyası değil yazdığın kodu. Eğer karşılık gelen yolları ve satır numaralarını bulmak için daha kolay hale getirmek için index.ts , firebase deploy yaratır functions/lib/index.js.map . Tercih ettiğiniz IDE veya üzerinden bu kaynak haritayı kullanabilirsiniz düğüm modülü .