برای توسعه دهندگانی که ترجیح می دهند توابع را در TypeScript بنویسند، Cloud Functions دو نوع پشتیبانی ارائه می دهد:
- ایجاد و پیکربندی پروژه های TypeScript برای انتقال خودکار در زمان اولیه (
firebase init functions
). - منبع TypeScript موجود را در زمان استقرار از طریق یک قلاب predeploy به جاوا اسکریپت انتقال دهید.
با پیروی از دستورالعملهای این راهنما، میتوانید یک پروژه جاوا اسکریپت موجود را به TypeScript منتقل کنید و به استقرار توابع با استفاده از یک هوک پیشفرض برای انتقال کد منبع خود ادامه دهید. TypeScript در هنگام نوشتن توابع مزایای زیادی نسبت به وانیلی جاوا اسکریپت ارائه می دهد:
- TypeScript از آخرین ویژگی های جاوا اسکریپت مانند async/wait، ساده سازی مدیریت قول پشتیبانی می کند
- پشتیبان Cloud Functions مشکلات رایج را در حین کدنویسی برجسته می کند
- ایمنی نوع به شما کمک می کند از خطاهای زمان اجرا در توابع مستقر جلوگیری کنید
اگر در تایپ اسکریپت تازه کار هستید، تایپ اسکریپت را در 5 دقیقه ببینید.
راه اندازی یک پروژه جدید Cloud Functions با TypeScript
firebase init functions
را در یک فهرست جدید اجرا کنید. این ابزار به شما گزینه هایی برای ساخت پروژه با جاوا اسکریپت یا 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 شما را می سازد و آن را به عنوان توابع مستقر می کند.
انتقال یک پروژه جاوا اسکریپت موجود به TypeScript
اگر یک پروژه Cloud Functions دارید که در جاوا اسکریپت مقداردهی اولیه و توسعه داده اید، می توانید آن را به TypeScript منتقل کنید. شما قویاً تشویق میشوید که قبل از شروع، یک نقطه بازرسی git یا سایر نسخههای پشتیبان ایجاد کنید.
برای انتقال یک پروژه JavaScript Cloud Functions :
- یک چک پوینت git ایجاد کنید و کپی هایی از فایل های منبع جاوا اسکریپت موجود خود را ذخیره کنید.
- در دایرکتوری پروژه،
firebase init functions
اجرا کنید و زمانی که از شما برای نوشتن توابع درخواست شد،TypeScript
انتخاب کنید. - وقتی از شما خواسته شد که فایل
package.json
موجود را بازنویسی کنید، خیر را انتخاب کنید، مگر اینکه مطمئن باشید نمیخواهید فایل موجود را حفظ کنید. -
index.ts
در دایرکتوریfunctions/src
حذف کنید و آن را با کد منبع موجود خود جایگزین کنید. - در فایل
tsconfig.json
ایجاد شده در زمان اولیه، گزینه های کامپایلر را طوری تنظیم کنید که به جاوا اسکریپت اجازه دهد:"allowJs": true
. - فایل
package.json
ذخیره شده خود را در پوشهfunctions
کپی کنید و آن را ویرایش کنید تا"main"
را روی"lib/index.js"
تنظیم کنید. همچنین در
package.json
، یک اسکریپت ساخت برای TypeScript مانند زیر اضافه کنید:{ "name": "functions", "scripts": { "build": "npm run lint && tsc" } ...
با اجرای
npm install --save-dev typescript @typescript-eslint/eslint-plugin @typescript-eslint/parser
"typescript"
را به عنوان یک وابستگی به توسعه دهنده اضافه کنید.برای همه وابستگی ها،
npm install --save @types/<dependency>
را اجرا کنید.کد منبع را به دلخواه از js به .ts بازنویسی کنید.
شبیه سازی توابع TypeScript
برای آزمایش توابع TypeScript به صورت محلی، می توانید از ابزارهای شبیه سازی که در Run functions به صورت محلی توضیح داده شده است استفاده کنید. مهم است که قبل از استفاده از این ابزارها کد خود را کامپایل کنید، بنابراین مطمئن شوید که قبل از اجرای firebase emulators:start
یا firebase functions:shell
، npm run build
در دایرکتوری توابع خود اجرا کنید. از طرف دیگر، 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 دلخواه خود یا از طریق یک ماژول گره استفاده کنید.