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:

  • İlk kullanıma hazırlama sırasında otomatik transpilasyon için TypeScript projeleri oluşturun ve yapılandırın (firebase init functions).
  • Dağıtım zamanında mevcut TypeScript kaynağını bir önceden dağıtım kancası aracılığıyla JavaScript'e aktarın.

Bu kılavuzdaki talimatları izleyerek mevcut bir JavaScript projesini TypeScript'e taşıyabilir ve kaynak kodunuzu aktarmak için bir önceden dağıtım kancası kullanarak işlevleri dağıtmaya devam edebilirsiniz. TypeScript, işlevler yazarken vanilya JavaScript'e göre birçok avantaj sağlar:

  • TypeScript, eşzamansız/bekleme gibi en yeni JavaScript özelliklerini destekleyerek vaat yönetimini basitleştirir
  • Kodlama yaparken sık karşılaşılan sorunları vurgulayan bir Cloud Functions laracı
  • Tür güvenliği, dağıtılan işlevlerde çalışma zamanı hatalarını önlemenize yardımcı olur

TypeScript'i kullanmaya yeni başladıysanız 5 dakika içinde TypeScript'e bakın.

TypeScript ile yeni bir Cloud Functions projesini başlatma

firebase init functions öğesini yeni bir dizinde çalıştırın. Bu araç, projeyi JavaScript veya TypeScript ile oluşturma seçenekleri sunar. Aşağıdaki proje yapısının çıktısı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 işlemi tamamlandıktan sonra, index.ts dosyasında örneğin yorum işaretini kaldırın ve "Hello World" işlevini çalışırken görmek için npm run serve komutunu çalıştırın.

Mevcut bir TypeScript projesini kullanma

Mevcut bir TypeScript projeniz varsa kodunuzu Cloud Functions for Firebase'e her dağıttığınızda projenizin çevrildiğinden emin olmak için bir önceden dağıtım kancası ekleyebilirsiniz. Doğru şekilde biçimlendirilmiş bir tsconfig.json dosyasına ve bir Firebase projesine ihtiyacınız vardır. Ayrıca, Firebase yapılandırmanızda aşağıdaki değişiklikleri yapmanız gerekir:

  1. TypeScript projenizi oluşturmak amacıyla bir 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 bir ö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

JavaScript'te başlatıp geliştirdiğiniz mevcut bir Cloud Functions projeniz varsa bunu TypeScript'e taşıyabilirsiniz. Başlamadan önce bir git kontrol noktası veya başka bir yedek oluşturmanız kesinlikle önerilir.

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 firebase init functions komutunu çalıştırın ve işlev yazmak için dil istendiğinde TypeScript seçeneğini belirleyin.
  3. Mevcut package.json dosyasının üzerine yazmak isteyip istemediğiniz sorulduğunda, mevcut dosyayı tutmak istemediğinizden emin değilseniz Hayır'ı seçin.
  4. functions/src dizinindeki index.ts işlemini 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 ayarlamak için 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 uygulamasını çalıştırarak "typescript" uygulamasını 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 olarak 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 bölümünde 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 işlevini ç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ırabilirsiniz. Bu komutlar hem derlemeyi çalıştırır hem de işlevler kabuğunu sunar/başlatır.

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

firebase deploy sırasında projenizin index.ts işlemi index.js diline çevrildi. Bu durumda, Cloud Functions günlüğü, yazdığınız koddan değil index.js dosyasından satır numarası çıktısı verir. firebase deploy, index.ts alanına karşılık gelen yolları ve satır numaralarını bulmanızı kolaylaştırmak için 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.