از TypeScript برای توابع ابری استفاده کنید

برای توسعه دهندگانی که ترجیح می دهند توابع را در TypeScript بنویسند، Cloud Functions دو نوع پشتیبانی ارائه می دهد:

  • ایجاد و پیکربندی پروژه های TypeScript برای انتقال خودکار در زمان اولیه ( firebase init functions ).
  • منبع TypeScript موجود را در زمان استقرار از طریق یک قلاب predeploy به جاوا اسکریپت انتقال دهید.

با پیروی از دستورالعمل‌های این راهنما، می‌توانید یک پروژه جاوا اسکریپت موجود را به TypeScript منتقل کنید و به استقرار توابع با استفاده از یک هوک پیش‌فرض برای انتقال کد منبع خود ادامه دهید. TypeScript در هنگام نوشتن توابع مزایای زیادی نسبت به وانیلی جاوا اسکریپت ارائه می دهد:

  • TypeScript از آخرین ویژگی های جاوا اسکریپت مانند async/wait، ساده سازی مدیریت قول پشتیبانی می کند
  • پشتیبان توابع ابری مشکلات رایج را در حین کدنویسی برجسته می کند
  • ایمنی نوع به شما کمک می کند از خطاهای زمان اجرا در توابع مستقر جلوگیری کنید

اگر در تایپ اسکریپت تازه کار هستید، تایپ اسکریپت را در 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 برای 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 شما را می سازد و آن را به عنوان توابع مستقر می کند.

انتقال یک پروژه جاوا اسکریپت موجود به TypeScript

اگر یک پروژه Cloud Functions دارید که در جاوا اسکریپت مقداردهی اولیه و توسعه داده اید، می توانید آن را به TypeScript منتقل کنید. شما قویاً تشویق می‌شوید که قبل از شروع، یک نقطه بازرسی git یا سایر نسخه‌های پشتیبان ایجاد کنید.

برای انتقال یک پروژه JavaScript Cloud Functions:

  1. یک چک پوینت git ایجاد کنید و کپی هایی از فایل های منبع جاوا اسکریپت موجود خود را ذخیره کنید.
  2. در دایرکتوری پروژه، firebase init functions اجرا کنید و زمانی که از شما برای نوشتن توابع درخواست شد، TypeScript انتخاب کنید.
  3. وقتی از شما خواسته شد که فایل package.json موجود را بازنویسی کنید، خیر را انتخاب کنید، مگر اینکه مطمئن باشید نمی‌خواهید فایل موجود را حفظ کنید.
  4. index.ts در دایرکتوری functions/src حذف کنید و آن را با کد منبع موجود خود جایگزین کنید.
  5. در فایل tsconfig.json ایجاد شده در زمان اولیه، گزینه های کامپایلر را طوری تنظیم کنید که به جاوا اسکریپت اجازه دهد: "allowJs": true .
  6. فایل package.json ذخیره شده خود را در پوشه functions کپی کنید و آن را ویرایش کنید تا "main" را روی "lib/index.js" تنظیم کنید.
  7. همچنین در package.json ، یک اسکریپت ساخت برای TypeScript مانند زیر اضافه کنید:

     {
       "name": "functions",
       "scripts": {
         "build": "npm run lint && tsc"
       }
     ...
    
  8. با اجرای npm install --save-dev typescript @typescript-eslint/eslint-plugin @typescript-eslint/parser "typescript" به عنوان یک وابستگی به توسعه دهنده اضافه کنید.

  9. برای همه وابستگی ها، npm install --save @types/<dependency> اجرا کنید.

  10. کد منبع را به دلخواه از 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 دلخواه خود یا از طریق یک ماژول گره استفاده کنید.