Cloud Functions için TypeScript kullanma

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

  • Başlatma sırasında otomatik olarak dönüştürme için TypeScript projeleri oluşturun ve yapılandırın (firebase init functions).
  • Mevcut TypeScript kaynağını, dağıtım sırasında predeploy kancası aracılığıyla JavaScript'e dönüştürün.

Bu kılavuzdaki talimatları uygulayarak mevcut bir JavaScript projesini TypeScript'e taşıyabilir ve kaynak kodunuzu derlemek için önceden dağıtım kancası kullanarak işlevleri dağıtmaya devam edebilirsiniz. TypeScript, işlev yazarken vanilla JavaScript'e kıyasla birçok avantaj sunar:

  • TypeScript, async/await gibi en yeni JavaScript özelliklerini destekleyerek söz yönetimi sürecini basitleştirir.
  • Cloud Functions linter, kod yazarken sık karşılaşılan sorunları vurgular.
  • Tür güvenliği, dağıtılan işlevlerde çalışma zamanı hatalarını önlemenize yardımcı olur.

TypeScript'i yeni kullanmaya başladıysanız 5 dakikada TypeScript başlıklı makaleye göz atın.

TypeScript ile yeni bir Cloud Functions projesi başlatma

firebase init functions dosyasını yeni bir dizinde çalıştırın. Bu araç sayesinde projeyi JavaScript veya TypeScript ile oluşturabilirsiniz. Aşağıdaki proje yapısını oluşturmak 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ındaki örneğin yorumunu kaldırın ve npm run serve komutunu çalıştırarak "Hello World" işlevinin nasıl çalıştığını görün.

Mevcut bir TypeScript projesini kullanma

Mevcut bir TypeScript projeniz varsa kodunuzu Cloud Functions for Firebase'ya her dağıttığınızda projenizin derlendiğinden emin olmak için bir predeploy kancası ekleyebilirsiniz. Düzgün şekilde oluşturulmuş bir tsconfig.json dosyası ve bir Firebase projeniz olmalıdır. Ayrıca Firebase yapılandırmanızda aşağıdaki değişiklikleri yapmanız gerekir:

  1. TypeScript projenizi oluşturmak için bir bash komut dosyası eklemek üzere package.json bölümünü düzenleyin. Örneğin:

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

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

Bu yapılandırmada, 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şlattığınız ve 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 önemle tavsiye edilir.

Mevcut bir JavaScript Cloud Functions projesini taşımak için:

  1. 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 yazma dili sorulduğunda TypeScript seçeneğini belirleyin.
  3. Mevcut package.json dosyasının üzerine yazılıp yazılmayacağı sorulduğunda, mevcut dosyayı saklamak istemediğinizden emin değilseniz Hayır'ı seçin.
  4. functions/src dizinindeki index.ts öğesini silip mevcut kaynak kodunuzla değiştirin.
  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" değerini "lib/index.js" olarak ayarlamak için dosyayı düzenleyin.
  7. Ayrıca package.json içinde, aşağıdaki gibi bir TypeScript 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 komutunu çalıştırarak "typescript" öğesini geliştirme 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 kodu, istediğiniz gibi .js'den .ts'ye yeniden yazın.

TypeScript işlevlerini taklit etme

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 komutunu çalıştırmadan önce işlevler dizininizde npm run build komutunu çalıştırdığınızdan emin olun. Alternatif olarak, npm run serve veya npm run shell komutunu kısayol olarak ç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, index.js'ye dönüştürülür. Bu nedenle Cloud Functions günlüğü, yazdığınız kodu değil index.js dosyasındaki satır numaralarını verir. index.ts'da ilgili yolları ve satır numaralarını daha kolay bulabilmeniz için firebase deploy, functions/lib/index.js.map oluşturur. Bu kaynak haritasını tercih ettiğiniz IDE'de veya bir node modülü aracılığıyla kullanabilirsiniz.