למפתחים שמעדיפים לכתוב פונקציות ב-TypeScript, יש ב-Cloud Functions שני סוגי תמיכה:
- יצירה והגדרה של פרויקטים של TypeScript לטרנספורמציה אוטומטית בזמן האתחול (
firebase init functions
). - להמיר מקור TypeScript קיים ל-JavaScript בזמן הפריסה באמצעות הוק לפני פריסה.
אם תפעלו לפי ההוראות במדריך הזה, תוכלו להעביר נכס קיים. לפרויקט JavaScript ל-TypeScript ולהמשיך לפרוס פונקציות באמצעות לפרוס מראש את ההוק (hook) כדי להעביר את קוד המקור שלכם. ל-TypeScript יש יתרונות רבים על פני וניל JavaScript כשכותבים פונקציות:
- TypeScript תומך בתכונות העדכניות ביותר של JavaScript, כמו async/await, ומפשט את ניהול ההבטחות
- איתור שגיאות בקוד של Cloud Functions מדגיש בעיות נפוצות במהלך התכנות
- איך תכונות הבטיחות של הטיפוסים עוזרות למנוע שגיאות זמן ריצה בפונקציות שנפרסו
אם אתם משתמשים חדשים ב-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, אפשר להוסיף הוק (hook) פריסה מראש כדי
וודאו שהפרויקט עובר טרנספורמציה בכל פעם שאתם פורסים את הקוד
Cloud Functions for Firebase תצטרכו קובץ tsconfig.json
בפורמט תקין ופרויקט Firebase, ותצטרכו לבצע את השינויים הבאים בתצורה של Firebase:
עורכים את
package.json
כדי להוסיף סקריפט bash לבניית פרויקט TypeScript. לדוגמה:{ "name": "functions", "scripts": { "build": "npm run lint && tsc" } ...
כדי להוסיף הוק (hook) פריסה מראש להרצת סקריפט ה-build, עורכים את
firebase.json
. לדוגמה:{ "functions": { "predeploy": "npm --prefix functions run build", } }
בהגדרות האלה משתמשים בפקודה firebase deploy --only functions
יוצר את קוד ה-TypeScript ופורס אותו כפונקציות.
העברת פרויקט JavaScript קיים ל-TypeScript
אם יש לכם פרויקט Cloud Functions שאתחלתם ופותח ב-JavaScript, ניתן להעביר אותו TypeScript. מומלץ מאוד ליצור נקודת עצירה ב-git או גיבוי אחר לפני שמתחילים.
כדי להעביר פרויקט Cloud Functions קיים של JavaScript:
- יצירת נקודת ביקורת ב-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
, מוסיפים סקריפט build עבור 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
,
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) או באמצעות מודול צמתים.