אפשר להתקין (ולנהל) את כל התוספים הרשמיים של Firebase באמצעות מסוף Firebase, ה-CLI של Firebase (ממשק שורת הפקודה) או באמצעות SDK שנוצר באופן אוטומטי.
חשוב לבדוק את ההבדלים בין הפעולות הנתמכות בכל שיטת התקנה.
התקנה באמצעות SDK שנוצר באופן אוטומטי היא אפשרות חדשה להתקנה ולניהול של תוספים. באמצעות האפשרות הזו, אפשר להשתמש ב-CLI כדי ליצור באופן אוטומטי Node SDK לגרסה ספציפית של התוסף, שאפשר לייבא כיחסי תלות רגילים ב-JavaScript או ב-TypeScript של Cloud Functions.
ערכת ה-SDK שנוצרה באופן אוטומטי כוללת:
- ממשק שמייצג את הפרמטרים של התוסף, והצהרות על סוגים לרוב סוגי הפרמטרים שאינם פרימיטיביים.
- פונקציית constructor שמאתחלת מופע של התוסף
- סוג תוסף שמכיל טריגרים של Eventarc לכל האירועים שהתוסף פולט.
אחרי שיוצרים SDK של תוסף, כל ההגדרות של התוסף מתבצעות בקוד.
שימוש באפשרות ההתקנה הזו יכול לפשט מאוד את הניהול של כמה מכונות של תוספים, במיוחד בפרויקטים שמכילים פונקציות של Cloud שהוגדרו מחוץ לתוספים.
כדי להתקין או לנהל תוספים, צריך להיות לכם אחד מהתפקידים הבאים: בעלים או עורך או אדמין ב-Firebase.
כדי להתקין תוסף, הפרויקט צריך להיות בתוכנית Blaze (תשלום לפי שימוש). אין חיוב על התקנת תוסף, אבל יכול להיות שתחויבו על השימוש בשירותי Firebase או בשירותי Cloud כמו Cloud Secret Manager, אם השימוש שלכם חורג מהתוכנית ללא תשלום של השירותים.
לפני שמתחילים
אם עדיין לא עשיתם זאת, מוסיפים את Firebase לפרויקט.
אם עדיין לא עשיתם זאת, כדאי לשדרג את הפרויקט לתוכנית Blaze (תשלום לפי שימוש).
שימו לב למזהה הפרויקט ב-Firebase או לכתובת החלופית של הפרויקט שהוגדרה בעבר.
- מזהה הפרויקט – אפשר להריץ את
firebase projects:list
מכל מקום במחשב. - כינוי לפרויקט – מריצים את
firebase use
מספריית האפליקציות המקומית.
- מזהה הפרויקט – אפשר להריץ את
שלב 1: הצגת מידע מפורט על תוסף
השלב הזה אופציונלי, אבל מומלץ מאוד.
לפני התקנת Firebase Extension, מומלץ לעיין במידע המפורט על התוסף, כולל:
- איך התוסף פועל, משימות שצריך לבצע לפני ההתקנה ופרטי התוסף
- תיאור ומידע כללי מזהים
- אם המשימות של התוסף מחייבות חשבון לחיוב
- שירותי Google (ממשקי API) ותפקידי גישה הנדרשים לפעולה
- משאבים שנוצרו עבור התוסף (כמו פונקציות)
- תיאורים של פרמטרים שניתן להגדיר על ידי משתמשים
כדי להציג את המידע המפורט של תוסף:
חשוב לוודא שהגדרתם את הסביבה ובחרתם תוסף.
מריצים את הפקודה extension-info מכל מקום במחשב:
firebase ext:info publisher-id/extension-id
הארגומנטים
publisher-id
ו-extension-id
הם חובה, וניתן למצוא אותם בדף הפרטים של התוסף לפני ההתקנה.
שלב 2: התקנת תוסף
לפני ההתקנה, כדאי לבדוק את המפרטים הבסיסיים של התוסף (כמו ממשקי ה-API שהופעלו, המשאבים שנוצרו, הרשאות הגישה שהוקצו וכו') ואת דרישות החיוב שלו.
לפני שממשיכים, חשוב לוודא שהגדרתם את הסביבה ובחרתם תוסף.
איך מפעילים את Cloud Functions for Firebase
אם אתם מתחילים פרויקט חדש או אם הפרויקט שלכם עדיין לא משתמש ב-Cloud Functions for Firebase, מריצים את הפקודה init functions
:
cd your-project
firebase init functions
בוחרים את שפת הפונקציות: TypeScript או JavaScript.
אם כבר ביצעתם את האיפוס של Cloud Functions בפרויקט, ודאו שאתם משתמשים בגרסה 5.1.0 ואילך של החבילה firebase-functions
:
cd your-project/functions
npm upgrade --save firebase-functions
אם אתם משתמשים ב-ESLint, כדאי גם להחריג מההגדרה שלכם ערכות SDK שנוצרו (.eslintrc.js
):
ignorePatterns: [
"/generated/**/*", // Ignore generated files.
// ...
],
יצירת SDK של תוסף
מריצים את הפקודה ext:sdk:install
בספריית Firebase המקומית.
firebase ext:sdk:install publisher-id/extension-id@version
לדוגמה, כדי להתקין את הגרסה 0.1.34 של התוסף firestore-send-email
:
firebase ext:sdk:install firebase/firestore-send-email@0.1.34
השדות publisher-id
ו-extension-id
הם חובה, וניתן למצוא אותם בדף הפרטים של התוסף לפני ההתקנה בכתובת extensions.dev. החלק @version
הוא אופציונלי. אם משמיטים אותו, הכלי מתקין את הגרסה העדכנית ביותר.
יש שתי אפשרויות שאפשר לציין:
--force
: מבצעים את כל הפעולות הבאות ללא אישור נוסף:- יצירת ה-SDK באופן אוטומטי, גם אם כבר נוצר SDK לאותה תוסף וגרסה.
- מתקינים את חבילת ה-SDK שנוצרה באופן אוטומטי בפרויקט Node של Cloud Functions.
--codebase
: השם של קוד הבסיס שאליו רוצים להוסיף את ה-SDK. אם לא מציינים את הפרמטר, הפקודה מוסיפה את ה-SDK למאגר הקוד שמוגדר כברירת מחדל,functions
.
הפקודה הזו יוצרת חבילת Node שמכילה SDK שנוצר באופן אוטומטי עבור התוסף, ומוסיפה אותה לאחד מבסיסי הקוד של Cloud Functions בפרויקט. בקוד הבסיסי שמוגדר כברירת מחדל (functions
), ה-SDK נשמר במיקום הבא:
functions/generated/extensions/publisher-id/extension-id/version
אחרי יצירת ה-SDK, תוצג הודעה עם אפשרות להתקין את ה-SDK גם בפרויקט Node של Cloud Functions. עונים כן להנחיה הזו.
הגדרת מכונות של תוספים
כדי להגדיר את התוסף, מייבאים את ה-SDK, ובכל מופע של התוסף שרוצים להתקין, קוראים לפונקציית ה-constructor ומעבירים לה מזהה מופע ייחודי לפרויקט ואת פרמטרים התצורה הנדרשים לתוסף.
במקור של Cloud Functions, מייבאים את המבנה באמצעות ההצהרה שמודפסת על ידי הפקודה
ext:sdk:install
.TypeScript
לדוגמה, אם יצרתם SDK להרחבה
firestore-send-email
, ההצהרהimport
תיראה בערך כך:import { firestoreSendEmail } from "@firebase-extensions/firebase-firestore-send-email-sdk";
אם התוסף דורש ערכים סודיים כמו סיסמאות, תצטרכו גם את הפונקציה
defineSecret
מ-Cloud Functions SDK:import { defineSecret } from "firebase-functions/params";
JavaScript
לדוגמה, אם יצרתם SDK לתוסף
firestore-send-email
, ההצהרהrequire
תיראה בערך כך:const { firestoreSendEmail } = require("@firebase-extensions/firebase-firestore-send-email-sdk");
אם התוסף דורש ערכים סודיים כמו סיסמאות, תצטרכו גם את הפונקציה
defineSecret
מ-Cloud Functions SDK:const { defineSecret } = require('firebase-functions/params');
לכל מכונה שרוצים להגדיר, צריך לקרוא לפונקציית ה-constructor ולייצא את התוצאה.
נותנים לכל מכונה מזהה ייחודי, שמכיל רק אותיות קטנות, מספרים ומקפים.
TypeScript
export const firestoreSendEmail_1 = firestoreSendEmail("firestore-send-email-1", { SMTP_CONNECTION_URI: "smtps://username@example.com@smtp.example.com:465", SMTP_PASSWORD: defineSecret("SMTP_PASSWORD"), MAIL_COLLECTION: "mail", DEFAULT_FROM: "ExampleCo <username@example.com>", TTL_EXPIRE_VALUE: "1", TTL_EXPIRE_TYPE: "day", });
JavaScript
exports.firestoreSendEmail_1 = firestoreSendEmail("firestore-send-email-1", { SMTP_CONNECTION_URI: "smtps://username@example.com@smtp.example.com:465", SMTP_PASSWORD: defineSecret("SMTP_PASSWORD"), MAIL_COLLECTION: "mail", DEFAULT_FROM: "ExampleCo <username@example.com>", TTL_EXPIRE_VALUE: "1", TTL_EXPIRE_TYPE: "day", });
הערה: צריך לציין ערכים סודיים באמצעות הפונקציה
defineSecret
.לאחר מכן, כדי לפרוס את התוספים שהגדרתם, מריצים את הפקודה:
firebase deploy --only functions --project=projectId-or-alias
כל האפשרויות הרגילות של פריסת Cloud Functions רלוונטיות. לדוגמה, כדי לפרוס מכונה אחת של תוסף מקוד בסיס ספציפי:
firebase deploy --only functions:codebase:extension-instance-id --project=projectId-or-alias
שלב 3: השלמת ההגדרה לאחר ההתקנה
בחלק מהתוספים יש שלבים חובה או שלבים אופציונליים שצריך לבצע לפני שמשתמשים בהם. ההוראות האלה מופיעות בדף הפרטים של התוסף אחרי ההתקנה במרכז הבקרה Extensions במסוף Firebase (הקישור הספציפי למרכז הבקרה מוצג במסוף אחרי ההתקנה).
אפשר למצוא את ההוראות האלה גם בקובץ POSTINSTALL.md
שכלול בתיקיית המקור של התוסף.
יצירת משאבים ב-Firebase
אם הגדרתם את התוסף כך שישתמש במשאבי Firebase (Cloud Firestore אוספים, Realtime Database נתיבים, Cloud Storage קטגוריות) שעדיין לא קיימים, צריך ליצור אותם לפני שמשתמשים בתוסף.
יצירת גורמים שמטפלים באירועים ב-Eventarc
תוספים מסוימים מפרסמים ב-Eventarc כשאירועים חשובים מתרחשים במהלך הביצוע. אם תוסף מפרסם אירועים, תוכלו לכתוב פונקציות שיגיבו לאירועים האלה באמצעות לוגיקה מותאמת אישית משלכם. אפשר להשתמש באפשרות הזו, למשל, כדי להודיע למשתמשים כשמשימות ממושכות מסתיימות, או כדי לעבד את הפלט של פונקציית תוסף לאחר מכן.
אם רוצים להגדיר טיפולים לכל אחד מהאירועים שהתוסף פולט, אפשר לעשות זאת באמצעות שיטות ההפעלה של כל מופע:
TypeScript
export const firestoreSendEmail_1 = firestoreSendEmail("firestore-send-email-1", { /* ... */ });
export const emailErrorHandler = firestoreSendEmail_1.onError((event) => {
// Handle mail errors.
});
JavaScript
exports.firestoreSendEmail_1 = firestoreSendEmail("firestore-send-email-1", { /* ... */ });
exports.emailErrorHandler = exports.firestoreSendEmail_1.onError((event) => {
// Handle mail errors.
});
צריך לייצא את פונקציית טיפול האירועים יחד עם מופע התוסף.
אחרי שמגדירים בורר אירועים, וכל פעם שמבצעים בו שינויים, צריך לפרוס מחדש גם את התוסף וגם את הבורר.
התקנה של כמה מכונות של תוסף
אפשר להתקין את אותו תוסף יותר מפעם אחת באותו פרויקט. לכל מכונה מותקנת יכולות להיות הגדרות מותאמות אישית משלה ומשאבי תוספים משלה. כל מכונה מותקנת מזוהה באמצעות מזהה המכונה שלה, שהוא ייחודי בפרויקט.
צריך לקרוא לפונקציית ה-constructor של ה-SDK שנוצר באופן אוטומטי פעם אחת לכל מופע שרוצים להתקין ולהגדיר.
השלבים הבאים
הצגת הפרטים וההגדרות של התוסף שהותקן במסוף Firebase.
מעקב אחר הפעילות של התוסף המותקן, כולל בדיקות של התקינות, השימוש והיומנים שלו.
באמצעות מסוף Firebase, אפשר לנהל את התוסף שהותקן. בתוספים הרשמיים של Firebase, אפשר להגדיר מחדש או להסיר את התוסף, וגם לעדכן אותו לגרסה העדכנית ביותר.
מומלץ להגדיר התראות תקציב לכל הפרויקט ולעקוב אחרי לוח הבקרה 'שימוש וחיובים' במסוף Firebase.