استخدم TypeScript للوظائف السحابية

للمطورين الذين يفضلون كتابة وظائف في TypeScript ، توفر Cloud Functions نوعين من الدعم:

  • قم بإنشاء وتكوين مشاريع TypeScript للترجمة التلقائية عند التهيئة ( firebase init functions ).
  • تحويل مصدر TypeScript الموجود إلى JavaScript في وقت النشر عبر خطاف النشر المسبق .

باتباع الإرشادات الواردة في هذا الدليل ، يمكنك ترحيل مشروع JavaScript موجود إلى TypeScript ومتابعة نشر الوظائف باستخدام خطاف النشر المسبق لتحويل شفرة المصدر الخاصة بك. يقدم TypeScript العديد من الفوائد على Vanilla JavaScript عند كتابة الوظائف:

  • يدعم TypeScript أحدث ميزات JavaScript مثل عدم التزامن / انتظار ، مما يبسط إدارة الوعد
  • يبرز linter وظائف السحابة المشكلات الشائعة أثناء الترميز
  • تساعدك أمان الكتابة على تجنب أخطاء وقت التشغيل في الوظائف المنشورة

إذا كنت مستخدمًا جديدًا لـ TypeScript ، فراجع TypeScript في غضون 5 دقائق .

بدء مشروع Cloud Functions جديد باستخدام TypeScript

قم بتشغيل firebase init functions في دليل جديد. تمنحك الأداة خيارات لإنشاء المشروع باستخدام JavaScript أو TypeScript. اختر TypeScript لإخراج بنية المشروع التالية:

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

بمجرد اكتمال التهيئة ، قم بإلغاء التعليق على العينة في index.ts وتشغيل npm run serve لرؤية وظيفة "Hello World" قيد التنفيذ.

استخدام مشروع TypeScript موجود

إذا كان لديك مشروع TypeScript موجود بالفعل ، فيمكنك إضافة خطاف النشر المسبق للتأكد من نقل مشروعك في كل مرة تنشر فيها التعليمات البرمجية إلى Cloud Functions for Firebase. ستحتاج إلى ملف tsconfig.json تم تشكيله بشكل صحيح ومشروع Firebase ، وستحتاج إلى إجراء التعديلات التالية على تهيئة Firebase:

  1. قم بتحرير package.json لإضافة نص برمجي bash لبناء مشروع TypeScript الخاص بك. على سبيل المثال:

     {
       "name": "functions",
       "scripts": {
         "build": "npm run lint && tsc"
       }
     ...
    
  2. قم بتحرير firebase.json لإضافة ربط مسبق النشر لتشغيل النص البرمجي للبناء. على سبيل المثال:

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

باستخدام هذا التكوين ، يقوم أمر firebase deploy --only functions ببناء كود TypeScript الخاص بك ونشره كوظائف.

ترحيل مشروع JavaScript موجود إلى TypeScript

إذا كان لديك مشروع Cloud Functions موجود قمت بتهيئته وتطويره في JavaScript ، فيمكنك ترحيله إلى TypeScript. نحثك بشدة على إنشاء نقطة تفتيش git أو أي نسخة احتياطية أخرى قبل البدء.

لترحيل مشروع JavaScript Cloud Functions موجود:

  1. أنشئ نقطة تفتيش git واحفظ نسخًا من ملفات مصدر JavaScript الحالية.
  2. في دليل المشروع ، شغّل firebase init functions وحدد TypeScript عندما يُطلب منك لغة لوظائف الكتابة.
  3. عندما يُطلب منك ما إذا كنت تريد الكتابة فوق ملف package.json الحالي ، حدد لا إلا إذا كنت متأكدًا من أنك لا تريد الاحتفاظ بالملف الحالي.
  4. احذف index.ts من functions/src ، واستبدلها بكود المصدر الحالي.
  5. في ملف tsconfig.json الذي تم إنشاؤه عند التهيئة ، اضبط خيارات المترجم للسماح لـ JavaScript: "allowJs": true .
  6. انسخ ملف package.json المحفوظ في دليل functions ، وقم بتحريره لضبط "main" على "lib/index.js" .
  7. أيضًا في package.json ، أضف نصًا برمجيًا للبناء لـ TypeScript مثل ما يلي:

     {
       "name": "functions",
       "scripts": {
         "build": "npm run lint && tsc"
       }
     ...
    
  8. أضف "typescript" كاعتمادية للجهاز عن طريق تشغيل npm install --save-dev typescript @typescript-eslint/eslint-plugin @typescript-eslint/parser .

  9. لجميع التبعيات ، قم بتشغيل npm install --save @types/<dependency> .

  10. أعد كتابة شفرة المصدر من .js إلى .ts حسب الرغبة.

محاكاة وظائف TypeScript

لاختبار وظائف TypeScript محليًا ، يمكنك استخدام أدوات المحاكاة الموضحة في وظائف التشغيل محليًا . من المهم تجميع التعليمات البرمجية الخاصة بك قبل استخدام هذه الأدوات ، لذا تأكد من تشغيل npm run build داخل دليل الوظائف قبل تشغيل firebase emulators:start or firebase functions:shell . بدلاً من ذلك ، قم بتشغيل npm run serve أو npm run shell كاختصار ؛ تعمل هذه الأوامر على تشغيل البنية وخدمة / بدء تشغيل shell الخاص بالوظائف.

سجلات الوظائف لمشروعات TypeScript

أثناء firebase deploy ، يتم تحويل index.ts الخاص بمشروعك إلى index.js ، مما يعني أن سجل Cloud Functions سيخرج أرقام الأسطر من ملف index.js وليس الرمز الذي كتبته. لتسهيل العثور على المسارات وأرقام الأسطر المقابلة في index.ts ، يقوم firebase deploy بإنشاء functions/lib/index.js.map . يمكنك استخدام خريطة المصدر هذه في IDE المفضل لديك أو عبر وحدة عقدة .