Bulut İşlevleri için TypeScript'i kullanın

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

  • Başlatma sırasında otomatik aktarma için TypeScript projeleri oluşturun ve yapılandırın ( firebase init functions ).
  • Mevcut TypeScript kaynağını dağıtım zamanında bir ön 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 ön dağıtım kancası kullanarak işlevleri dağıtmaya devam edebilirsiniz. TypeScript, işlevleri yazarken vanilya JavaScript'e göre birçok avantaj sunar:

  • TypeScript, zaman uyumsuz/beklemede gibi en yeni JavaScript özelliklerini destekleyerek söz yönetimini basitleştirir
  • Bulut İşlevleri linter'ı kodlama sırasında 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'te yeniyseniz 5 dakika içinde TypeScript'e bakın.

TypeScript ile yeni bir Cloud Functions projesini başlatma

firebase init functions yeni bir dizinde çalıştırın. Araç size 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'de örneğin açıklamasını kaldırın ve "Merhaba Dünya" işlevinin çalıştığını 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 aktarıldığından emin olmak için bir ön dağıtım kancası ekleyebilirsiniz. Düzgün biçimde oluşturulmuş bir tsconfig.json dosyasına ve bir Firebase projesine ihtiyacınız olacak ve Firebase yapılandırmanızda aşağıdaki değişiklikleri yapmanız gerekecektir:

  1. TypeScript projenizi oluşturmak üzere bir bash betiği eklemek için package.json düzenleyin. Örneğin:

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

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

Bu yapılandırmayla, bir firebase deploy --only functions komutu TypeScript kodunuzu oluşturur ve onu işlevler 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 yedekleme 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 firebase init functions çalıştırın ve işlevleri yazmak için bir dil istendiğinde TypeScript seçin.
  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 silin ve 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. Kaydedilen package.json dosyanızı functions dizinine kopyalayın ve "main" değerini "lib/index.js" olarak ayarlayacak şekilde düzenleyin.
  7. Ayrıca package.json dosyasına TypeScript için aşağıdakine benzer bir derleme betiği 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" i dev bağımlılığı olarak ekleyin.

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

  10. Kaynak kodunu .js'den .ts'ye istediğiniz gibi 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 öykünme 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şlevler dizininizde npm run build komutunu çalıştırdığınızdan emin olun. Alternatif olarak, kısayol olarak npm run serve veya npm run shell ç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 dosyasına aktarılır; bu, Bulut İşlevleri günlüğünün, yazdığınız koddan değil, index.js dosyasındaki satır numaralarını çıkaracağı anlamına gelir. index.ts dosyasında karşılık gelen yolları ve satır numaralarını bulmanızı kolaylaştırmak için firebase deploy , functions/lib/index.js.map dosyasını oluşturur. Bu kaynak haritasını tercih ettiğiniz IDE'de veya bir düğüm modülü aracılığıyla kullanabilirsiniz.