Cloud Functions için TypeScript kullanma

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

  • Başlatma sırasında (firebase init functions) otomatik çeviri için TypeScript projeleri oluşturun ve yapılandırın.
  • Önceden dağıtım kancası aracılığıyla, dağıtım sırasında mevcut TypeScript kaynağını JavaScript'e aktarın.

Bu kılavuzdaki talimatları uygulayarak mevcut bir JavaScript projesini TypeScript'e taşıyabilir ve kaynak kodunuzu dönüştürmek için önceden dağıtım kancası kullanarak işlevleri dağıtmaya devam edebilirsiniz. TypeScript, fonksiyonları yazarken normal JavaScript'e göre pek çok avantaj sunar:

  • TypeScript, taahhüt yönetimini basitleştiren eşzamansız/bekle gibi en son JavaScript özelliklerini destekler.
  • Cloud Functions aracı, siz kodlama sırasında ortaya çıkan yaygın sorunları vurgular
  • Tür güvenliği, dağıtılan işlevlerde çalışma zamanı hatalarından kaçınmanıza yardımcı olur

TypeScript'i kullanmaya yeni başladıysanız 5 dakika içinde TypeScript başlıklı makaleyi inceleyin.

TypeScript ile yeni bir Cloud Functions projesi başlatma

firebase init functions dosyasını yeni bir dizinde çalıştırın. Araç, projeyi JavaScript veya TypeScript ile derleme seçenekleri sunar. Aşağıdaki proje yapısının çıkışını almak için TypeScript'i 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 tamamlandığında "Hello World" işlevinin nasıl çalıştığını görmek için index.ts'teki örneğin açıklamasını kaldırın ve npm run serve komutunu çalıştırın.

Mevcut bir TypeScript projesini kullanarak

Mevcut bir TypeScript projeniz varsa, kodunuzu Firebase için Cloud Functions'a her dağıttığınızda projenizin aktarıldığından emin olmak için önceden dağıtım kancası ekleyebilirsiniz. Doğru biçimlendirilmiş bir tsconfig.json dosyası ve bir Firebase projesi, Firebase yapılandırmanızda aşağıdaki değişiklikleri yapmanız gerekir:

  1. TypeScript projenizi oluşturmak üzere bash komut dosyası eklemek için package.json öğesini düzenleyin. Örnek:

     {
       "name": "functions",
       "scripts": {
         "build": "npm run lint && tsc"
       }
     ...
    
  2. Derleme komut dosyasını çalıştırmak üzere önceden dağıtım kancası eklemek için firebase.json öğesini düzenleyin. Örnek:

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

Bu yapılandırmada, bir firebase deploy --only functions komutu TypeScript kodunuzu oluşturur ve işlev olarak dağıtır.

Mevcut bir JavaScript projesini TypeScript'e taşıma

Başlattığınız ve JavaScript'te geliştirdiğiniz mevcut bir Cloud Functions projeniz varsa bu projeyi TypeScript'e taşıyabilirsiniz. Başlamadan önce bir Git kontrol noktası veya başka bir yedek oluşturmanız önemle tavsiye edilir.

Mevcut bir JavaScript Cloud Functions 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, işlev yazmak için dil istendiğinde firebase init functions komutunu çalıştırın ve TypeScript öğesini seçin.
  3. Mevcut package.json dosyasının üzerine yazılıp yazılmayacağı sorulduğunda, mevcut dosyayı tutmak istemediğinizden emin değilseniz Hayır'ı seçin.
  4. functions/src dizinindeki index.ts dosyasını mevcut kaynak kodunuzla değiştirerek silin.
  5. Başlatma sırasında oluşturulan tsconfig.json dosyasında derleyici seçeneklerini JavaScript'e izin verecek şekilde ayarlayın: "allowJs": true.
  6. Kaydettiğiniz package.json dosyasını functions dizinine kopyalayın ve "main" dosyasını "lib/index.js" olarak ayarlayacak şekilde düzenleyin.
  7. Ayrıca, package.json içinde, TypeScript için aşağıdaki gibi bir derleme komut dosyası ekleyin:

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

  9. Tüm bağımlılıklar için npm install --save @types/<dependency> komutunu çalıştırın.

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

TypeScript işlevleri emülasyonu

TypeScript işlevlerini yerel olarak test etmek için İşlevleri yerel olarak çalıştırma başlıklı makalede açıklanan emülasyon araçlarını kullanabilirsiniz. Bu araçları kullanmadan önce kodunuzu derlemeniz önemlidir. Bu nedenle, firebase emulators:start veya firebase functions:shell çalıştırmadan önce işlev dizininizde npm run build komutunu çalıştırdığınızdan emin olun. Alternatif olarak, kısayol olarak npm run serve veya npm run shell komutunu çalıştırın. Bu komutlar hem derlemeyi çalıştırır hem de işlev kabuğunu sunar/başlatır.

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

firebase deploy sırasında projenizin index.ts değeri index.js ürününe aktarılır. Yani Cloud Functions günlüğü, yazdığınız kodu değil, index.js dosyasından satır numaralarını çıkarır. index.ts içinde karşılık gelen yolları ve satır numaralarını bulmanızı kolaylaştırmak için firebase deploy, functions/lib/index.js.map oluşturur. Bu kaynak haritasını tercih ettiğiniz IDE'de veya bir düğüm modülü aracılığıyla kullanabilirsiniz.