למפתחים המעדיפים לכתוב פונקציות ב-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 שלך:
ערוך את
package.json
כדי להוסיף סקריפט bash לבניית פרויקט TypeScript שלך. לדוגמה:{ "name": "functions", "scripts": { "build": "npm run lint && tsc" } ...
ערוך את
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 קיים:
- צור נקודת ביקורת 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 באופן מקומי, אתה יכול להשתמש בכלי האמולציה המתוארים ב- 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 המועדף עליך או באמצעות מודול צומת .