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

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

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

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

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

إذا كنت جديدًا في استخدام 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" باعتباره تبعية dev عن طريق تشغيل 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 أو firebase functions:shell . وبدلاً من ذلك، قم بتشغيل npm run serve أو npm run shell كاختصار؛ تعمل هذه الأوامر على تشغيل الإنشاء وخدمة/بدء تشغيل غلاف الوظائف.

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

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