للمطورين الذين يفضلون كتابة وظائف في 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:
قم بتحرير
package.json
لإضافة نص برمجي bash لبناء مشروع TypeScript الخاص بك. على سبيل المثال:{ "name": "functions", "scripts": { "build": "npm run lint && tsc" } ...
قم بتحرير
firebase.json
لإضافة ربط مسبق النشر لتشغيل النص البرمجي للبناء. على سبيل المثال:{ "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
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 المفضل لديك أو عبر وحدة عقدة .