بالنسبة إلى المطوّرين الذين يفضّلون كتابة الدوال بلغة TypeScript، يوفّر Cloud Functions نوعَين من الدعم:
- إنشاء مشاريع TypeScript وضبطها للترجمة التلقائية من مصدر إلى مصدر عند الإعداد (
firebase init functions) - الترجمة من مصدر إلى مصدر لمصدر TypeScript الحالي إلى JavaScript في وقت التفعيل من خلال موضع الإدراج قبل التفعيل.
باتّباع التعليمات الواردة في هذا الدليل، يمكنك نقل مشروع JavaScript حالي إلى TypeScript ومواصلة نشر الدوال باستخدام خطاف predeploy لترجمة الرمز المصدر من مصدر إلى مصدر. تقدّم TypeScript العديد من المزايا مقارنةً بـ JavaScript الأساسية عند كتابة الدوال:
- تتيح TypeScript أحدث ميزات JavaScript، مثل async/await، ما يسهّل إدارة الوعود
- يُبرز linter في 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:
عدِّل
package.jsonلإضافة نص برمجي Bash لإنشاء مشروع TypeScript. على سبيل المثال:{ "name": "functions", "scripts": { "build": "npm run lint && tsc" } ...عدِّل
firebase.jsonلإضافة خطاف predeploy لتشغيل نص الإنشاء البرمجي. على سبيل المثال:{ "functions": { "predeploy": "npm --prefix functions run build", } }
باستخدام هذه الإعدادات، ينشئ الأمر firebase deploy --only functions رمز TypeScript وينشره كدوال.
نقل مشروع JavaScript حالي إلى TypeScript
إذا كان لديك مشروع Cloud Functions حالي تم إعداده وتطويره باستخدام JavaScript، يمكنك نقله إلى TypeScript. ننصحك بشدة بإنشاء نقطة تفتيش git أو نسخة احتياطية أخرى قبل البدء.
لنقل مشروع حالي يستخدم JavaScript Cloud Functions:
- أنشئ نقطة تفتيش git واحفظ نُسخًا من ملفات مصدر JavaScript الحالية.
- في دليل المشروع، شغِّل
firebase init functionsواختَرTypeScriptعندما يُطلب منك اختيار لغة لكتابة الدوال. - عندما يُطلب منك استبدال ملف
package.jsonالحالي، اختَر لا ما لم تكن متأكدًا من أنّك لا تريد الاحتفاظ بالملف الحالي. - احذف
index.tsفي الدليلfunctions/src، واستبدِله بالرمز المصدر الحالي. - في ملف
tsconfig.jsonالذي تم إنشاؤه عند الإعداد، اضبط خيارات برنامج التجميع للسماح بـ JavaScript:"allowJs": true. - انسخ ملف
package.jsonالمحفوظ إلى دليلfunctions، وعدِّله لضبط"main"على"lib/index.js". في
package.jsonأيضًا، أضِف نصًا برمجيًا للإصدار من أجل TypeScript على النحو التالي:{ "name": "functions", "scripts": { "build": "npm run lint && tsc" } ...أضِف
"typescript"كاعتمادية تطوير من خلال تشغيلnpm install --save-dev typescript @typescript-eslint/eslint-plugin @typescript-eslint/parser.بالنسبة إلى جميع التبعيات، شغِّل
npm install --save @types/<dependency>.أعِد كتابة الرمز المصدر من .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،
ما يعني أنّ سجلّ Cloud Functions سيعرض أرقام الأسطر من
ملف index.js وليس الرمز الذي كتبته. لتسهيل العثور على المسارات وأرقام الأسطر المقابلة في index.ts، ينشئ firebase deploy functions/lib/index.js.map. يمكنك استخدام خريطة المصدر هذه في بيئة التطوير المتكاملة (IDE) المفضّلة لديك أو من خلال وحدة عقدة.