השתמש ב-TypeScript עבור פונקציות ענן

למפתחים המעדיפים לכתוב פונקציות ב-TypeScript, Cloud Functions מספקת שני סוגי תמיכה:

  • צור והגדר פרוייקטים של TypeScript להעברה אוטומטית באתחול ( firebase init functions ).
  • העבר מקור TypeScript קיים ל-JavaScript בזמן הפריסה באמצעות הוק מראש .

בעקבות ההוראות במדריך זה, תוכל להעביר פרויקט JavaScript קיים ל-TypeScript ולהמשיך בפריסת פונקציות באמצעות הוק מראש להטמעת קוד המקור שלך. TypeScript מציע יתרונות רבים על פני וניל JavaScript בעת כתיבת פונקציות:

  • TypeScript תומך בתכונות JavaScript העדכניות ביותר כמו אסינכרון/חכה, מה שמפשט את ניהול ההבטחות
  • A Cloud Functions 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 שלך:

  1. ערוך את package.json כדי להוסיף סקריפט bash לבניית פרויקט TypeScript שלך. לדוגמה:

     {
       "name": "functions",
       "scripts": {
         "build": "npm run lint && tsc"
       }
     ...
    
  2. ערוך את firebase.json כדי להוסיף Hook מראש להפעלת סקריפט ה-build. לדוגמה:

     {
       "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" כתלות במפתחים על ידי הפעלת npm install --save-dev typescript @typescript-eslint/eslint-plugin @typescript-eslint/parser .

  9. עבור כל התלות, הפעל את npm install --save @types/<dependency> .

  10. כתוב מחדש את קוד המקור מ-.js ל-.ts כרצונך.

הדמיית פונקציות TypeScript

כדי לבדוק פונקציות TypeScript באופן מקומי, אתה יכול להשתמש בכלי האמולציה המתוארים ב- Run functions locally . חשוב להרכיב את הקוד שלך לפני השימוש בכלים האלה, אז הקפד להריץ את npm run build בתוך ספריית הפונקציות שלך לפני הפעלת firebase emulators:start או firebase functions:shell . לחלופין, הפעל npm run serve או npm run shell כקיצור דרך; הפקודות הללו מרצות גם את ה-build וגם משרתות/מתחילות את מעטפת הפונקציות.

יומני פונקציות עבור פרוייקטים של TypeScript

במהלך firebase deploy , index.ts של הפרויקט שלך מועבר ל- index.js , כלומר היומן של Cloud Functions יוציא מספרי שורות מהקובץ index.js ולא מהקוד שכתבת. כדי להקל עליך למצוא את הנתיבים ומספרי השורות המתאימים ב- index.ts , firebase deploy יוצר functions/lib/index.js.map . אתה יכול להשתמש במפת מקור זו ב-IDE המועדף עליך או באמצעות מודול צומת .