מסמך עזר של Firebase CLI

ב-CLI של Firebase (GitHub) יש מגוון כלים לניהול פרויקטים ב-Firebase, לצפייה בהם ולפריסה שלהם.

לפני שמשתמשים ב-CLI של Firebase, צריך להגדיר פרויקט Firebase.

הגדרה או עדכון של ה-CLI

התקנת ה-CLI של Firebase

אפשר להתקין את ה-CLI של Firebase בשיטה שמתאימה למערכת ההפעלה, לרמת החוויה ו/או לתרחיש לדוגמה. לא משנה איך מתקינים את ה-CLI, יש לכם גישה לאותה פונקציונליות ולפקודה firebase.

Windows macOS Linux

Windows

ניתן להתקין את ה-CLI של Firebase ל-Windows באחת מהאפשרויות הבאות:

אפשרות תיאור מומלץ עבור...
קובץ בינארי עצמאי מורידים את הקובץ הבינארי העצמאי ל-CLI. אחר כך אפשר לגשת לקובץ ההפעלה כדי לפתוח מעטפת שבה אפשר להריץ את הפקודה firebase. מפתחים חדשים

מפתחים שלא משתמשים ב-Node.js או לא מכירים אותו
npm משתמשים ב-npm (מנהל החבילות Node Package) כדי להתקין את ה-CLI ולהפעיל את הפקודה firebase שזמינה בכל העולם. מפתחים שמשתמשים ב-Node.js

בינארי עצמאי

כדי להוריד ולהריץ את הקובץ הבינארי של ה-CLI של Firebase, מבצעים את השלבים הבאים:

  1. הורידו את הקובץ הבינארי של Firebase CLI ל-Windows.

  2. נכנסים לקובץ הבינארי כדי לפתוח מעטפת שבה אפשר להריץ את הפקודה firebase.

  3. המשיכו להתחבר ולבדוק את ה-CLI.

נשימות בדקה

כדי להשתמש ב-npm (מנהל החבילות של הצמתים) כדי להתקין את ה-CLI של Firebase:

  1. מתקינים את Node.js באמצעות nvm-windows (מנהל הגרסאות של הצומת). כשמתקינים את Node.js, כלי הפקודות npm מתקינה באופן אוטומטי.

  2. התקן את ה-CLI של Firebase דרך npm על ידי הרצת הפקודה הבאה:

    npm install -g firebase-tools

    הפקודה הזו מפעילה את הפקודה firebase שזמינה באופן גלובלי.

  3. המשיכו להתחבר ולבדוק את ה-CLI.

macOS או Linux

תוכלו להתקין את ה-CLI של Firebase ל-macOS או ל-Linux באחת מהאפשרויות הבאות:

אפשרות תיאור מומלץ עבור...
סקריפט להתקנה אוטומטית מריצים פקודה יחידה שמזהה באופן אוטומטי את מערכת ההפעלה, מורידים את גרסת ה-CLI האחרונה ולאחר מכן מפעילה את הפקודה firebase שזמינה בכל העולם. מפתחים חדשים

מפתחים שלא משתמשים ב-Node.js או מכירים את Node.js

פריסות אוטומטיות בסביבת CI/CD
קובץ בינארי עצמאי מורידים את הקובץ הבינארי העצמאי ל-CLI. לאחר מכן תוכלו להגדיר ולהפעיל את הקובץ הבינארי בהתאם לתהליך העבודה שלכם. תהליכי עבודה שניתן להתאים אישית באופן מלא באמצעות CLI
npm משתמשים ב-npm (מנהל החבילות Node Package) כדי להתקין את ה-CLI ולהפעיל את הפקודה firebase שזמינה בכל העולם. מפתחים שמשתמשים ב-Node.js

סקריפט התקנה אוטומטית

כך מתקינים את ה-CLI של Firebase באמצעות סקריפט ההתקנה האוטומטי:

  1. מריצים את פקודת ה-cURL הבאה:

    curl -sL https://firebase.tools | bash

    הסקריפט הזה מזהה אוטומטית את מערכת ההפעלה שלכם, מוריד את הגרסה האחרונה של Firebase CLI ולאחר מכן מפעיל את הפקודה firebase שזמינה בכל העולם.

  2. המשיכו להתחבר ולבדוק את ה-CLI.

לדוגמאות נוספות ופרטים נוספים על סקריפט ההתקנה האוטומטי, עיינו בקוד המקור של הסקריפט בכתובת firebase.tools.

בינארי עצמאי

כך מורידים ומפעילים את הקובץ הבינארי של Firebase CLI שספציפי למערכת ההפעלה שלכם:

  1. מורידים את הקובץ הבינארי של Firebase CLI למערכת ההפעלה: macOS | Linux

  2. (אופציונלי) מגדירים את הפקודה firebase שזמינה גלובלית.

    1. יוצרים את קובץ ההפעלה הבינארי על ידי הרצת chmod +x ./firebase_tools.
    2. מוסיפים את הנתיב של הקובץ הבינארי ל-PATH.
  3. המשיכו להתחבר ולבדוק את ה-CLI.

נשימות בדקה

כדי להשתמש ב-npm (מנהל החבילות של הצמתים) כדי להתקין את ה-CLI של Firebase, צריך לבצע את השלבים הבאים:

  1. התקן את Node.js באמצעות nvm (מנהל הגרסאות של Node).
    התקנת Node.js מתקינה באופן אוטומטי את כלי הפקודה npm.

  2. התקן את ה-CLI של Firebase דרך npm על ידי הרצת הפקודה הבאה:

    npm install -g firebase-tools

    הפקודה הזו מפעילה את הפקודה firebase שזמינה באופן גלובלי.

  3. המשיכו להתחבר ולבדוק את ה-CLI.

מתחברים ובודקים את ה-CLI של Firebase

לאחר התקנת ה-CLI, חובה לבצע אימות. לאחר מכן תוכלו לאשר את האימות על ידי הצגת רשימת הפרויקטים ב-Firebase.

  1. נכנסים ל-Firebase באמצעות חשבון Google על ידי הרצת הפקודה הבאה:

    firebase login

    הפקודה הזאת מחברת את המכונה המקומית שלכם ל-Firebase ומעניקה לכם גישה לפרויקטים שלכם ב-Firebase.

  2. מומלץ לבדוק שה-CLI מותקן כמו שצריך ולגשת לחשבון על ידי הצגת רשימת הפרויקטים ב-Firebase. מריצים את הפקודה הבאה:

    firebase projects:list

    הרשימה שמוצגת צריכה להיות זהה לרשימת הפרויקטים של Firebase שמופיעים במסוף Firebase.

עדכון לגרסה האחרונה של ה-CLI

באופן כללי, רצוי להשתמש בגרסת ה-CLI העדכנית ביותר של Firebase.

העדכון של גרסת ה-CLI תלוי במערכת ההפעלה ובאופן שבו התקנתם אותו.

Windows

macOS

  • סקריפט התקנה אוטומטית: מריצים את curl -sL https://firebase.tools | upgrade=true bash
  • קובץ בינארי עצמאי: מורידים את הגרסה החדשה, ואז מחליפים אותה במערכת
  • npm: הרצה של npm install -g firebase-tools

Linux

  • סקריפט התקנה אוטומטית: מריצים את curl -sL https://firebase.tools | upgrade=true bash
  • קובץ בינארי עצמאי: מורידים את הגרסה החדשה, ואז מחליפים אותה במערכת
  • npm: הרצה של npm install -g firebase-tools

שימוש ב-CLI עם מערכות CI

כדי להשלים את האימות ב-CLI של Firebase נדרש דפדפן, אבל הוא תואם באופן מלא ל-CI ולסביבות ללא GUI.

  1. במכונה עם דפדפן, מתקינים את Firebase CLI.

  2. כדי להתחיל את תהליך הכניסה, מריצים את הפקודה הבאה:

    firebase login:ci
  3. נכנסים לכתובת ה-URL שצוינה ומתחברים באמצעות חשבון Google.

  4. מדפיסים אסימון רענון חדש. סשן ה-CLI הנוכחי לא יושפע.

  5. שומרים את אסימון הפלט בצורה מאובטחת אך נגישה במערכת ה-CI.

  6. יש להשתמש באסימון הזה כשמריצים פקודות firebase. אפשר להשתמש באחת משתי האפשרויות הבאות:

    • אפשרות 1: שמירת האסימון בתור משתנה הסביבה FIREBASE_TOKEN. המערכת תשתמש באסימון באופן אוטומטי.

    • אפשרות 2: מריצים את כל פקודות firebase עם הדגל --token TOKEN במערכת CI.
      זהו סדר הקדימות של טעינת האסימון: דגל, משתנה סביבה, פרויקט Firebase הרצוי.

הפעלה של פרויקט Firebase

כדי לבצע משימות נפוצות רבות באמצעות ה-CLI, כמו פריסה בפרויקט Firebase, צריך ספריית פרויקט. יוצרים ספריית פרויקט באמצעות הפקודה firebase init. ספריית הפרויקט היא בדרך כלל אותה הספרייה ברמה הבסיסית (root) של בקרת המקור, ואחרי שמריצים את firebase init הספרייה מכילה קובץ תצורה מסוג firebase.json.

כדי להפעיל פרויקט Firebase חדש, מריצים את הפקודה הבאה מספריית האפליקציה:

firebase init

הפקודה firebase init כוללת הוראות מפורטות להגדרה של ספריית הפרויקט ושל חלק מהמוצרים של Firebase. במהלך אתחול הפרויקט, ה-CLI של Firebase מבקש מכם לבצע את המשימות הבאות:

  • בוחרים את המוצרים שרוצים להגדיר ב-Firebase בפרויקט Firebase.

    בשלב הזה מתבקשים להגדיר הגדרות לקבצים ספציפיים למוצרים שנבחרו. מידע נוסף על ההגדרות האלה זמין במסמכי התיעוד של המוצר הספציפי (למשל, אירוח). שימו לב: תמיד אפשר להריץ את firebase init מאוחר יותר כדי להגדיר עוד מוצרים של Firebase.

  • בוחרים פרויקט ברירת מחדל ב-Firebase.

    השלב הזה משייך את ספריית הפרויקט הנוכחית לפרויקט Firebase, כך שפקודות ספציפיות לפרויקט (כמו firebase deploy) יפעלו מול פרויקט Firebase המתאים.

    אפשר גם לשייך כמה פרויקטים של Firebase (כמו פרויקט Staging ופרויקט ייצור) לאותה ספריית פרויקטים.

בסיום האתחול, מערכת Firebase יוצרת באופן אוטומטי את שני הקבצים הבאים ברמה הבסיסית (root) של ספריית האפליקציות המקומית:

  • קובץ תצורה firebase.json שמציג את רשימת ההגדרות של הפרויקט.

  • קובץ .firebaserc שבו מאוחסנים aliases של הפרויקט.

הקובץ firebase.json

הפקודה firebase init יוצרת קובץ תצורה של firebase.json ברמה הבסיסית (root) של ספריית הפרויקט.

הקובץ firebase.json נדרש כדי לפרוס נכסים באמצעות ה-CLI של Firebase כי הוא מציין אילו קבצים והגדרות מספריית הפרויקט פרוסים בפרויקט Firebase שלכם. מאחר שאפשר לקבוע הגדרות מסוימות בספריית הפרויקטים או במסוף Firebase, חשוב לפתור את כל התנגשויות הפריסה האפשריות.

ניתן להגדיר את רוב אפשרויות האירוח ב-Firebase ישירות בקובץ firebase.json. עם זאת, בשירותי Firebase אחרים שאפשר לפרוס באמצעות ה-CLI של Firebase, הפקודה firebase init יוצרת קבצים ספציפיים שבהם אפשר לקבוע הגדרות לשירותים האלה, כמו קובץ index.js ל-Cloud Functions. אפשר גם להגדיר קטעי הוק (hooks) לפריסה מראש או לפריסה לאחר הפריסה בקובץ firebase.json.

לפניכם קובץ firebase.json לדוגמה עם הגדרות ברירת מחדל, אם בוחרים ב-Firebase Hosting, ב-Cloud Firestore וב-Cloud Functions for Firebase (עם בחירת האפשרות 'מקור TypeScript' ו'איתור שגיאות בקוד') במהלך האתחול.

{
  "hosting": {
    "public": "public",
    "ignore": [
      "firebase.json",
      "**/.*",
      "**/node_modules/**"
    ]
  },
  "firestore": {
      "rules": "firestore.rules",
      "indexes": "firestore.indexes.json"
  },
  "functions": {
    "predeploy": [
      "npm --prefix \"$RESOURCE_DIR\" run lint",
      "npm --prefix \"$RESOURCE_DIR\" run build"
    ]
  }
}

אמנם משתמשים ב-firebase.json כברירת מחדל, אבל אפשר להעביר את הדגל --config PATH כדי לציין קובץ תצורה חלופי.

הגדרה למספר מסדי נתונים של Cloud Firestore

כשמריצים את firebase init, הקובץ firebase.json יכיל מפתח firestore יחיד שתואם למסד הנתונים שמוגדר כברירת מחדל בפרויקט, כמו שמתואר למעלה.

אם הפרויקט מכיל כמה מסדי נתונים של Cloud Firestore, צריך לערוך את הקובץ firebase.json כך שישייך לכל מסד נתונים כללי אבטחה שונים וקובצי מקור שונים של אינדקס של מסד הנתונים. משנים את הקובץ באמצעות מערך JSON, עם רשומה אחת לכל מסד נתונים.

      "firestore": [
        {
          "database": "default",
          "rules": "firestore.default.rules",
          "indexes": "firestore.default.indexes.json"
        },
        {
          "database": "ecommerce",
          "rules": "firestore.ecommerce.rules",
          "indexes": "firestore.ecommerce.indexes.json"
        }
      ],

קבצים ב-Cloud Functions שיש להתעלם מהם בפריסה

בזמן פריסת הפונקציה, ה-CLI מציין באופן אוטומטי רשימה של קבצים בספרייה functions שיש להתעלם מהם. כך אפשר למנוע פריסה של קבצים מיותרים בקצה העורפי שעלולים להגדיל את נפח הנתונים בפריסה.

כברירת מחדל, רשימת הקבצים שהמערכת מתעלמת מהם ומוצגת בפורמט JSON:

"ignore": [
  ".git",
  ".runtimeconfig.json",
  "firebase-debug.log",
  "firebase-debug.*.log",
  "node_modules"
]

אם אתם מוסיפים ערכים מותאמים אישית משלכם ל-ignore ב-firebase.json, חשוב לשמור (או להוסיף, אם חסרה) את רשימת הקבצים המוצגת למעלה.

ניהול כינויי פרויקטים

ניתן לשייך כמה פרויקטים של Firebase לאותה ספריית פרויקטים. לדוגמה, יכול להיות שתרצו להשתמש בפרויקט Firebase אחד ל-Staging ובפרויקט אחר לייצור. באמצעות סביבות פרויקט שונות אפשר לאמת את השינויים לפני הפריסה לייצור. הפקודה firebase use מאפשרת לעבור בין כינויים וליצור כינויים חדשים.

הוספת כינוי לפרויקט

כשבוחרים פרויקט Firebase במהלך אתחול הפרויקט, הכינוי default מוקצה לפרויקט באופן אוטומטי. עם זאת, כדי לאפשר לפקודות ספציפיות לפרויקט לרוץ בפרויקט Firebase אחר ועדיין להשתמש באותה ספריית פרויקטים, מריצים את הפקודה הבאה מספריית הפרויקט:

firebase use --add

הפקודה הזו תבקש מכם לבחור פרויקט אחר ב-Firebase ולהקצות את הפרויקט ככינוי. הקצאות כינויים נכתבות בקובץ .firebaserc בתוך ספריית הפרויקט שלכם.

שימוש בכינויי פרויקטים

כדי להשתמש בכינויים של פרויקטים ב-Firebase, מריצים כל אחת מהפקודות הבאות מספריית הפרויקטים.

פקודה תיאור
firebase use הצגת רשימה של הכינויים המוגדרים כרגע עבור ספריית הפרויקטים שלך
firebase use \
PROJECT_ID|ALIAS
מפנה את כל הפקודות להרצה בפרויקט Firebase שצוין.
ה-CLI משתמש בפרויקט הזה כ "פרויקט הפעיל" הנוכחי.
firebase use --clear ניקוי הפרויקט הפעיל.

כדי להגדיר פרויקט פעיל חדש, מריצים את firebase use PROJECT_ID|ALIAS לפני שמריצים פקודות CLI אחרות.

firebase use \
--unalias PROJECT_ALIAS
מסיר את הכינוי מספריית הפרויקט.

אפשר לשנות את מה שמוגדר כפרויקט הפעיל הנוכחי על ידי העברת הדגל --project באמצעות כל פקודת CLI. לדוגמה, אפשר להגדיר את ה-CLI כך שיפעל מול פרויקט Firebase שהקציתם לו את כתובות האימייל החלופיות staging. אם רוצים להריץ פקודה אחת כנגד הפרויקט ב-Firebase שהוקצה לה הכינוי prod, אפשר להריץ לדוגמה את firebase deploy --project=prod.

בקרת מקור וכינויי פרויקטים

באופן כללי, יש לבדוק את הקובץ .firebaserc בבקרת המקור כדי לאפשר לצוות לשתף כינויי פרויקטים. עם זאת, בפרויקטים של קוד פתוח או בתבניות למתחילים, בדרך כלל לא כדאי לבדוק את הקובץ .firebaserc.

אם יש לכם פרויקט פיתוח שמיועד לשימושכם בלבד, תוכלו להעביר את הדגל --project בכל פקודה או להריץ את firebase use PROJECT_ID בלי להקצות כינוי לפרויקט Firebase.

הצגת פרויקט Firebase ובדיקה שלו באופן מקומי

אפשר להציג ולבדוק את פרויקט Firebase בכתובות URL שמתארחות באופן מקומי לפני הפריסה לסביבת הייצור. אם רוצים לבדוק רק תכונות נבחרות, אפשר להשתמש ברשימה שמופרדת בפסיקים בדגל בפקודה firebase serve.

אם רוצים לבצע אחת מהמשימות הבאות, מריצים את הפקודה הבאה מהשורש של ספריית הפרויקטים המקומית:

  • מציגים את התוכן הסטטי של האפליקציה שמתארחת ב-Firebase.
  • תוכלו להשתמש בפונקציות Cloud כדי ליצור תוכן דינמי לאירוח ב-Firebase, ואתם רוצים להשתמש בפונקציות ה-HTTP ייצור (פריסה) כדי לבצע אמולציה של האירוח בכתובת URL מקומית.
firebase serve --only hosting

אמולציה של הפרויקט באמצעות פונקציות HTTP מקומיות

כדי לחקות את הפרויקט באמצעות פונקציות HTTP מקומיות, מריצים את הפקודות הבאות מספריית הפרויקט.

  • כדי לחקות פונקציות HTTP ואירוח לבדיקה של כתובות URL מקומיות, משתמשים באחת מהפקודות הבאות:

    firebase serve
    firebase serve --only functions,hosting // uses a flag
  • כדי לחקות פונקציות HTTP בלבד, משתמשים בפקודה הבאה:

    firebase serve --only functions

בדיקה ממכשירים מקומיים אחרים

כברירת מחדל, firebase serve מגיב רק לבקשות של localhost. כלומר, תוכלו לגשת לתוכן המתארח במחשב מדפדפן האינטרנט במחשב, אבל לא ממכשירים אחרים ברשת. אם רוצים לבדוק מכשירים מקומיים אחרים, השתמשו בדגל --host, כך:

firebase serve --host 0.0.0.0  // accepts requests to any host

פריסה בפרויקט Firebase

ה-CLI של Firebase מנהל את פריסת הקוד והנכסים בפרויקט Firebase, כולל:

  • גרסאות חדשות של האתרים שלך באירוח ב-Firebase
  • Cloud Functions for Firebase חדש, מעודכן או קיים
  • כללים למסד נתונים בזמן אמת ב-Firebase
  • כללים ל-Cloud Storage for Firebase
  • כללים ל-Cloud Firestore
  • מדדים של Cloud Firestore

כדי לפרוס בפרויקט Firebase, מריצים את הפקודה הבאה מספריית הפרויקטים:

firebase deploy

באופן אופציונלי, אפשר להוסיף הערה לכל אחת מהפריסות. התגובה הזו תוצג יחד עם שאר פרטי הפריסה בדף אירוח ב-Firebase של הפרויקט. למשל:

firebase deploy -m "Deploying the best new feature ever."

כשמשתמשים בפקודה firebase deploy, חשוב לשים לב לדברים הבאים:

  • כדי לפרוס משאבים מספריית פרויקט, ספריית הפרויקט חייבת להכיל קובץ firebase.json. הקובץ הזה נוצר בשבילכם באופן אוטומטי באמצעות הפקודה firebase init.

  • כברירת מחדל, firebase deploy יוצר גרסה עבור כל המשאבים לפריסה בספריית הפרויקט שלך. כדי לפרוס תכונות או שירותים ספציפיים של Firebase, צריך להשתמש בפריסה חלקית.

התנגשויות פריסה לכללי אבטחה

עבור מסד נתונים בזמן אמת ב-Firebase, Cloud Storage for Firebase ו-Cloud Firestore, אפשר להגדיר כללי אבטחה בספריית הפרויקטים המקומית או במסוף Firebase.

אפשרות נוספת למניעת התנגשויות בפריסה היא שימוש בפריסה חלקית ולהגדיר כללים רק במסוף Firebase.

מכסות לפריסה

יכול להיות (אבל לא סביר) שתחרגו ממכסה שמגבילה את הקצב או הנפח של פעולות הפריסה של Firebase. לדוגמה, כשפורסים מספר גדול מאוד של פונקציות, יכול להיות שתתקבל הודעת השגיאה HTTP 429 Quota. כדי לפתור בעיות כאלה, כדאי לנסות להשתמש בפריסה חלקית.

החזרת פריסה למצב הקודם

אפשר להחזיר את הפריסה של אירוח ב-Firebase לגרסה הקודמת בדף אירוח ב-Firebase על ידי בחירה בפעולה החזרה למצב הקודם לגרסה הרצויה.

בשלב זה אי אפשר לבטל גרסאות של כללי אבטחה למסד נתונים בזמן אמת ב-Firebase, ל-Cloud Storage for Firebase או ל-Cloud Firestore.

פריסה של שירותי Firebase ספציפיים

אם רוצים לפרוס רק תכונות או שירותים ספציפיים של Firebase, אפשר להשתמש ברשימה שמופרדת בפסיקים בדגל בפקודה firebase deploy. לדוגמה, הפקודה הבאה פורסת תוכן ב-Firebase Hosting ואת כללי האבטחה של Cloud Storage.

firebase deploy --only hosting,storage

בטבלה הבאה מפורטים השירותים והתכונות הזמינים לפריסה חלקית. השמות בדגלים תואמים למפתחות שבקובץ התצורה firebase.json.

תחביר הסימונים שירות או תכונה שנפרסו
--only hosting תוכן של אירוח ב-Firebase
--only database הכללים של מסד נתונים בזמן אמת ב-Firebase
--only storage כללים של Cloud Storage for Firebase
--only firestore הכללים של Cloud Firestore וגם אינדקסים לכל מסדי הנתונים שהוגדרו
--only functions Cloud Functions for Firebase (יש אפשרות לקבל גרסאות ספציפיות יותר של הדגל הזה)

פריסה של פונקציות ספציפיות

כאשר פורסים פונקציות, ניתן לטרגט פונקציות ספציפיות. למשל:

firebase deploy --only functions:function1
firebase deploy --only functions:function1,functions:function2

אפשרות אחרת היא לקבץ פונקציות לקבוצות ייצוא בקובץ /functions/index.js. קיבוץ פונקציות מאפשר לפרוס כמה פונקציות באמצעות פקודה אחת.

לדוגמה, אפשר לכתוב את הפונקציות הבאות כדי להגדיר groupA ו-groupB:

var functions = require('firebase-functions');

exports.groupA = {
  function1: functions.https.onRequest(...),
  function2: functions.database.ref('\path').onWrite(...)
}
exports.groupB = require('./groupB');

בדוגמה הזו, קובץ functions/groupB.js נפרד מכיל פונקציות נוספות שמגדירות באופן ספציפי את הפונקציות ב-groupB. למשל:

var functions = require('firebase-functions');

exports.function3 = functions.storage.object().onChange(...);
exports.function4 = functions.analytics.event('in_app_purchase').onLog(...);

בדוגמה הזו, תוכלו לפרוס את כל הפונקציות של groupA על ידי הרצת הפקודה הבאה מספריית הפרויקט:

firebase deploy --only functions:groupA

לחלופין, אפשר לטרגט פונקציה ספציפית בתוך קבוצה על ידי הרצת הפקודה הבאה:

firebase deploy --only functions:groupA.function1,groupB.function4

מחיקת פונקציות

ה-CLI של Firebase תומך בפקודות ובאפשרויות הבאות למחיקת פונקציות שנפרסו בעבר:

  • מחיקת כל הפונקציות שתואמות לשם שצוין בכל האזורים:

    firebase functions:delete FUNCTION-1_NAME

  • מחיקת פונקציה ספציפית שפועלת באזור שלא מוגדר כברירת המחדל:

    firebase functions:delete FUNCTION-1_NAME --region REGION_NAME

  • מאפשרת למחוק יותר מפונקציה אחת:

    firebase functions:delete FUNCTION-1_NAME FUNCTION-2_NAME

  • מחיקת קבוצת פונקציות שצוינה:

    firebase functions:delete GROUP_NAME

  • המערכת תעקוף את בקשת האישור:

    firebase functions:delete FUNCTION-1_NAME --force

איך להגדיר משימות מבוססות סקריפט לפריסה מראש ולפריסה לאחר פריסה

אפשר לחבר סקריפטים של מעטפת לפקודה firebase deploy כדי לבצע משימות של פריסה מראש או פריסה לאחר הפריסה. לדוגמה, סקריפט לפריסה מראש יכול להעביר את קוד TypeScript ל-JavaScript, ו-hook לאחר פריסה מאוחרת יכול להודיע לאדמינים על פריסות של תוכן חדש באתר לאירוח ב-Firebase.

כדי להגדיר הוּק (hooks) לפריסה מראש או לפריסה לאחר הפריסה, צריך להוסיף סקריפטים של Bash לקובץ התצורה firebase.json. אפשר להגדיר סקריפטים קצרים ישירות בקובץ firebase.json, או להפנות לקבצים אחרים שנמצאים בספריית הפרויקט.

לדוגמה, הסקריפט הבא הוא הביטוי firebase.json למשימת פריסה מאוחרת ששולחת הודעה ב-Slack אחרי פריסה מוצלחת לאירוח ב-Firebase.

"hosting": {
  // ...

  "postdeploy": "./messageSlack.sh 'Just deployed to Firebase Hosting'",
  "public": "public"
}

קובץ הסקריפט messageSlack.sh נמצא בספריית הפרויקט ונראה כך:

curl -X POST -H 'Content-type: application/json' --data '{"text":"$1"}'
     \https://SLACK_WEBHOOK_URL

אפשר להגדיר ה-hooks של predeploy ו-postdeploy לכל אחד מהנכסים שאפשר לפרוס. שימו לב שהרצת firebase deploy מפעילה את כל משימות הפריסה מראש והפריסה לאחר הפריסה שהוגדרו בקובץ firebase.json. כדי להריץ רק את המשימות שמשויכות לשירות Firebase ספציפי, צריך להשתמש בפקודות פריסה חלקיות.

גם ה-hooks predeploy וגם postdeploy מדפיסים לטרמינל את זרמי הפלט והשגיאות הרגילים של הסקריפטים. במקרים של כשלים, חשוב לשים לב לנקודות הבאות:

  • אם הוק (hook) לפריסה מראש לא יושלם כמצופה, הפריסה תבוטל.
  • אם הפריסה נכשלת מסיבה כלשהי, ה-hooks לפריסה הבאה לא יופעלו.

משתני סביבה

בסקריפטים שפועלים ב-hooks של פריסה לפני ופריסה לאחר הפריסה, משתני הסביבה הבאים זמינים:

  • $GCLOUD_PROJECT: מזהה הפרויקט הפעיל
  • $PROJECT_DIR: ספריית הבסיס שמכילה את הקובץ firebase.json
  • $RESOURCE_DIR: (לסקריפטים hosting ו-functions בלבד) המיקום של הספרייה שמכילה את המשאבים של האירוח או של Cloud Functions לפריסה

ניהול מופעים מרובים של מסד נתונים בזמן אמת

לפרויקט Firebase יכולים להיות מספר מכונות של מסד נתונים בזמן אמת ב-Firebase. כברירת מחדל, פקודות CLI מקיימות אינטראקציה עם מופע מסד הנתונים ברירת המחדל.

עם זאת, אפשר לבצע אינטראקציה עם מופע של מסד נתונים שלא מוגדר כברירת המחדל באמצעות הדגל --instance DATABASE_NAME. הפקודות הבאות תומכות בדגל --instance:

  • firebase database:get
  • firebase database:profile
  • firebase database:push
  • firebase database:remove
  • firebase database:set
  • firebase database:update

מסמך עזר של פקודות

פקודות ניהול ב-CLI

פקודה תיאור
עזרה הצגת מידע עזרה על ה-CLI או פקודות ספציפיות.
init משייכת ומגדירה פרויקט Firebase חדש בספרייה הנוכחית. הפקודה הזו יוצרת קובץ תצורה של firebase.json בספרייה הנוכחית.
login מאמת את ה-CLI עם חשבון Firebase שלכם. נדרשת גישה לדפדפן אינטרנט.
כדי להתחבר ל-CLI בסביבות מרוחקות שלא מאפשרות גישה אל localhost, משתמשים בדגל --no-localhost.
login:ci יוצר אסימון אימות לשימוש בסביבות לא אינטראקטיביות.
התנתקות ניתוק ה-CLI מחשבון Firebase שלכם.
פתיחה פתיחת דפדפן למשאבים הרלוונטיים בפרויקט.
projects:list הצגת כל הפרויקטים ב-Firebase שאליהם יש לכם גישה.
להשתמש מגדיר את פרויקט Firebase הפעיל עבור ה-CLI.
ניהול כינויים של פרויקטים.

פקודות לניהול פרויקטים

פקודה תיאור
ניהול פרויקטים של Firebase
projects:addfirebase הוספה של משאבי Firebase לפרויקט קיים ב-Google Cloud.
projects:create יוצרים פרויקט חדש ב-Google Cloud ולאחר מכן מוסיפים את המשאבים של Firebase לפרויקט החדש.
projects:list הצגת כל הפרויקטים ב-Firebase שאליהם יש לכם גישה.
ניהול אפליקציות ב-Firebase (iOS, Android, אינטרנט)
apps:create יצירה של אפליקציית Firebase חדשה בפרויקט הפעיל.
apps:list רשימה של אפליקציות Firebase הרשומות בפרויקט הפעיל.
apps:sdkconfig מדפיס את ההגדרות של שירותי Google של אפליקציית Firebase.
setup:web הוצא משימוש. במקום זאת, צריך להשתמש ב-apps:sdkconfig ולציין את web כארגומנט של הפלטפורמה.
מדפיס את ההגדרות של שירותי Google של אפליקציית אינטרנט ב-Firebase.
ניהול גיבובים של אישורי SHA (ב-Android בלבד)
apps:android:sha:create \
FIREBASE_APP_ID SHA_HASH
הוספה של גיבוב אישור ה-SHA שצוין לאפליקציית Firebase ל-Android שצוינה.
apps:android:sha:delete \
FIREBASE_APP_ID SHA_HASH
מחיקת הגיבוב (hash) של אישור ה-SHA שצוין מאפליקציית Firebase ל-Android שצוינה.
apps:android:sha:list \
FIREBASE_APP_ID
בתיבת הדו-שיח הזו מפורטים הגיבובים של אישור ה-SHA של אפליקציית Firebase ל-Android שצוינה.

פריסה ופיתוח מקומי

הפקודות האלה מאפשרות לכם לפרוס את האתר שלכם ב-Firebase Hosting ולקיים איתו אינטראקציה.

פקודה תיאור
deploy פריסה של קוד ונכסים מספריית הפרויקט אל הפרויקט הפעיל. לאירוח ב-Firebase, צריך קובץ תצורה של firebase.json.
serve מפעיל שרת אינטרנט מקומי עם הגדרת האירוח ב-Firebase. לאירוח ב-Firebase, צריך קובץ תצורה של firebase.json.

פקודות של הפצת אפליקציות

פקודה תיאור
appdistribution:distribution \
--app FIREBASE_APP_ID
הופך את ה-build לזמין לבודקים.
appdistribution:testers:add הוספת בודקים לפרויקט.
appdistribution:testers:remove מתבצעת הסרה של בודקים מהפרויקט.

פקודות אימות (ניהול משתמשים)

פקודה תיאור
auth:export המערכת מייצאת את חשבונות המשתמשים של הפרויקט הפעיל לקובץ JSON או CSV. לפרטים נוספים, אפשר לעיין בדף auth:Import ו-auth:export.
auth:import מייבאת את חשבונות המשתמשים מקובץ JSON או CSV לפרויקט הפעיל. לפרטים נוספים, אפשר לעיין בדף auth:Import ו-auth:export.

פקודות Cloud Firestore

פקודה תיאור
firestore:locations

הצגת רשימה של המיקומים הזמינים למסד הנתונים של Cloud Firestore.

firestore:databases:create DATABASE_ID

יוצרים מופע של מסד נתונים במצב מקורי בפרויקט Firebase.

הפקודה לוקחת את הדגלים הבאים:

  • --location <region name> (שם האזור) כדי לציין את מיקום הפריסה של מסד הנתונים. הערה: אפשר להריץ את firebase Firestore:locations כדי להציג רשימה של המיקומים הזמינים. חובה.
  • --delete-Protection <deleteProtectionState> כדי לאפשר או למנוע מחיקה של מסד הנתונים שצוין. הערכים החוקיים הם ENABLED או DISABLED. ברירת המחדל היא DISABLED.
  • --point-in-time-recovery <PITRState> מאפשר לקבוע אם השחזור יתבצע באמצעות נקודת זמן. הערכים החוקיים הם ENABLED או DISABLED. ברירת המחדל היא DISABLED. זה שינוי אופציונלי.
firestore:databases:list

הצגת רשימה של מסדי נתונים בפרויקט Firebase.

firestore:databases:get DATABASE_ID

קבלת הגדרה של מסד נתונים למסד נתונים ספציפי בפרויקט Firebase.

firestore:databases:update DATABASE_ID

אפשר לעדכן את ההגדרה של מסד הנתונים של מסד נתונים מסוים בפרויקט Firebase.

יש צורך בסימון אחד לפחות. הפקודה לוקחת את הדגלים הבאים:

  • --delete-Protection <deleteProtectionState> כדי לאפשר או למנוע מחיקה של מסד הנתונים שצוין. הערכים החוקיים הם ENABLED או DISABLED. ברירת המחדל היא DISABLED.
  • --point-in-time-recovery <PITRState> מאפשר לקבוע אם השחזור יתבצע באמצעות נקודת זמן. הערכים החוקיים הם ENABLED או DISABLED. ברירת המחדל היא DISABLED. זה שינוי אופציונלי.
firestore:databases:delete DATABASE_ID

מוחקים מסד נתונים בפרויקט Firebase.

firestore:indexes

הצגת רשימה של אינדקסים של מסד נתונים בפרויקט Firebase.

הפקודה נושאת את הדגל הבא:

  • --database DATABASE_ID כדי לציין את שם מסד הנתונים שעבורו רוצים לרשום את האינדקסים. אם לא הוא לא סופק, האינדקסים רשומים עבור מסד הנתונים המוגדר כברירת מחדל.
firestore:delete

מחיקת המסמכים במסד הנתונים של הפרויקט הפעיל. באמצעות CLI, אפשר למחוק באופן רקורסיבי את כל המסמכים באוסף.

חשוב לזכור שמחיקת נתוני Cloud Firestore באמצעות ה-CLI כרוכה בעלויות קריאה ומחיקה. מידע נוסף זמין במאמר הסבר על החיוב ב-Cloud Firestore.

הפקודה נושאת את הדגל הבא:

  • --database DATABASE_ID כדי לציין את שם מסד הנתונים שממנו המסמכים נמחקים. אם לא מציינים שום אפשרות, המסמכים נמחקים ממסד הנתונים שמוגדר כברירת מחדל. זה שינוי אופציונלי.

פקודות Cloud Functions for Firebase

פקודה תיאור
functions:config:clone שכפול סביבה של פרויקט אחר אל פרויקט Firebase הפעיל.
functions:config:get מאחזרת את ערכי התצורה הקיימים של ה-Cloud Functions של הפרויקט הפעיל.
functions:config:set שמירת ערכי התצורה של זמן ריצה של ה-Cloud Functions של הפרויקט הפעיל.
functions:config:unset הסרת הערכים מההגדרה הפעילה של זמן הריצה של הפרויקט.
functions:log קריאת יומנים מ-Cloud Functions שנפרסו.

מידע נוסף זמין במסמכי התיעוד בנושא הגדרת סביבה.

פקודות Crashlytics

פקודה תיאור
crashlytics:mappingfile:generateid \
--resource-file=PATH/TO/ANDROID_RESOURCE.XML
יוצר מזהה קובץ מיפוי ייחודי בקובץ משאב Android (XML) שצוין.
crashlytics:mappingfile:upload \
--app=FIREBASE_APP_ID \
--resource-file=PATH/TO/ANDROID_RESOURCE.XML \
PATH/TO/MAPPING_FILE.TXT
העלאת קובץ מיפוי תואם ל-ProGuard (TXT) לאפליקציה הזו, ושיוך שלו למזהה קובץ המיפוי שהוצהר בקובץ המשאב של Android (XML) שצוין.
crashlytics:symbols:upload \
--app=FIREBASE_APP_ID \
PATH/TO/SYMBOLS
יצירת קובץ סמלים שתואם ל-Crashlytics עבור קריסות של ספריית נייטיב ב-Android ומעלה אותו לשרתים של Firebase.

פקודות של תוספים

פקודה תיאור
ext מידע על אופן השימוש בפקודות של התוספים ל-Firebase.
רשימה של מופעי התוספים שהותקנו בפרויקט הפעיל.
ext:הגדרה \
EXTENSION_INSTANCE_ID
מגדירה מחדש את ערכי הפרמטרים של מופע של תוסף במניפסט של התוסף.
ext:info \
PUBLISHER_ID/EXTENSION_ID
מדפיסה מידע מפורט על תוסף.
ext:install \
PUBLISHER_ID/EXTENSION_ID
מוסיף מופע חדש של תוסף למניפסט של התוסף.
ext:list רשימה של כל מופעי התוספים שהותקנו בפרויקט Firebase.
מדפיסה את מזהה המכונה של כל תוסף.
תוספים:הסרת התקנה \
EXTENSION_INSTANCE_ID
מסיר מופע של תוסף מהמניפסט של התוסף.
ext:update \
EXTENSION_INSTANCE_ID
מעדכן מופע של תוסף לגרסה האחרונה של המניפסט של התוסף.
ext:export המערכת מייצאת את כל המופעים של התוספים שהותקנו מהפרויקט אל המניפסט של התוסף.

פקודות של בעלי תוכן דיגיטלי בתוספים

פקודה תיאור
ext:dev:init הפעלת בסיס קוד בסיסי לתוסף חדש בספרייה הנוכחית.
ext:dev:list \
PUBLISHER_ID
מדפיס רשימה של כל התוספים שהועלו על ידי מוציא לאור.
ext:dev:register רושם פרויקט Firebase בתור פרויקט בעל אפליקציה של תוספים.
ext:dev:deprecate \
PUBLISHER_ID/EXTENSION_ID \
VERSION_PREDICATE
מוציאים משימוש גרסאות של תוספים שתואמות למשוואת הגרסה.
חיזוי של גרסה יכול להיות גרסה יחידה (למשל 1.0.0), או טווח של גרסאות (למשל >1.0.0).
אם לא צוין חיזוי גרסה, נוציא משימוש את כל הגרסאות של התוסף הזה.
ext:dev:undeprecate \
PUBLISHER_ID/EXTENSION_ID \
VERSION_PREDICATE
מוציאים משימוש גרסאות של תוספים שתואמות לגרסה משוייפת.
חיזוי של גרסה יכול להיות גרסה יחידה (למשל 1.0.0), או טווח של גרסאות (למשל >1.0.0).
אם לא צוין חיזוי גרסה, נוציא משימוש את כל הגרסאות של התוסף הזה.
ext:dev:upload \
PUBLISHER_ID/EXTENSION_ID
מעלה גרסה חדשה של תוסף.
ext:dev:usage \
PUBLISHER_ID
מציגה ספירות של התקנות ומדדי שימוש עבור תוספים שהועלו על ידי בעל תוכן דיגיטלי.

פקודות אירוח

פקודה תיאור
hosting:disable

יפסיק להציג את התנועה של אירוח ב-Firebase בפרויקט Firebase הפעיל.

אחרי הרצת הפקודה הזו, כתובת ה-URL לאירוח הפרויקט תציג את ההודעה "האתר לא נמצא".

ניהול אתרי אירוח
Firebase Host:sites:create \
SITE_ID

יצירת אתר אירוח חדש בפרויקט Firebase הפעיל באמצעות SITE_ID שצוין

(אופציונלי) מציינים אפליקציית אינטרנט קיימת של Firebase שרוצים לשייך לאתר החדש על ידי העברת הדגל הבא: --app FIREBASE_APP_ID

Firebase Host:sites:delete \
SITE_ID

מחיקת אתר האירוח שצוין

ה-CLI יציג בקשת אישור לפני מחיקת האתר.

(אופציונלי) אפשר לדלג על הודעת האישור על ידי העברת הדגלים הבאים: -f או --force

Firebase Host:sites:get \
SITE_ID

שולפת מידע על אתר האירוח שצוין

firebase Host:sites:list

רשימה של כל אתרי האירוח של פרויקט Firebase הפעיל

ניהול ערוצי תצוגה מקדימה
Firebase Host:channel:create \
CHANNEL_ID

יצירת ערוץ תצוגה מקדימה חדש ברירת המחדל של אתר האירוח באמצעות CHANNEL_ID שצוין

פקודה זו לא נפרסת בערוץ.

Firebase Host:channel:delete \
CHANNEL_ID

מחיקת ערוץ התצוגה המקדימה שצוין

לא ניתן למחוק ערוץ בשידור חי של אתר.

Firebase Host:channel:deploy \
CHANNEL_ID

פורס את התוכן והתצורה שלך באירוח לערוץ התצוגה המקדימה שצוין

אם ערוץ התצוגה המקדימה עדיין לא קיים, הפקודה הזו תיצור את הערוץ באתר האירוח ברירת המחדל לפני הפריסה בערוץ.

Firebase host:channel:list פירוט כל הערוצים (כולל הערוץ 'בשידור חי') ברירת המחדל באתר האירוח
Firebase Host:channel:open \
CHANNEL_ID
פתיחת דפדפן לכתובת ה-URL של הערוץ שצוין או החזרת כתובת ה-URL אם לא ניתן לפתוח בדפדפן
שכפול גרסה
Firebase Host:clone \
SOURCE_SITE_ID:SOURCE_CHANNEL_ID \
TARGET_SITE_ID:TARGET_CHANNEL_ID

שכפול הגרסה האחרונה שנפרסה בערוץ ה-"source" שצוין לערוץ ה-"target" שצוין

הפקודה הזו נפרסת גם לערוץ ה-"target" שצוין. אם ערוץ ה"יעד" לא קיים עדיין, הפקודה הזו יוצרת ערוץ תצוגה מקדימה חדש באתר האירוח של "target" לפני הפריסה בערוץ.

Firebase Host:clone \
SOURCE_SITE_ID:@VERSION_ID \
TARGET_SITE_ID:TARGET_CHANNEL_ID

שכפול הגרסה שצוינה לערוץ ה-"target" שצוין

הפקודה הזו נפרסת גם לערוץ ה-"target" שצוין. אם ערוץ ה"יעד" לא קיים עדיין, הפקודה הזו יוצרת ערוץ תצוגה מקדימה חדש באתר האירוח של "target" לפני הפריסה בערוץ.

VERSION_ID נמצא במרכז הבקרה לאירוח במסוף Firebase.

פקודות במסד הנתונים בזמן אמת

שימו לב: אפשר ליצור את המופע הראשוני של מסד הנתונים בזמן אמת כברירת מחדל במסוף Firebase, או באמצעות תהליך העבודה הכללי firebase init או באמצעות התהליך הספציפי של firebase init database.

אחרי שיוצרים מכונות, אפשר לנהל אותן כפי שמוסבר במאמר ניהול מכונות מרובות של מסדי נתונים בזמן אמת.

פקודה תיאור
database:get מאחזר נתונים ממסד הנתונים של הפרויקט הפעיל ומציג אותם כ-JSON. תומכת בהרצת שאילתות על נתונים שנוספו לאינדקס.
database:instances:create יצירת מופע של מסד נתונים עם שם מכונה שצוין. מקבל את האפשרות --location ליצירת מסד נתונים באזור שצוין. במאמר בחירת מיקומים לפרויקט מוסבר איך בוחרים שמות של אזורים באפשרות הזו. אם לא קיימת מופע של מסד נתונים בפרויקט הנוכחי, תוצג בקשה להריץ את התהליך של firebase init כדי ליצור מכונה.
database:instances:list הצגת רשימה של כל המופעים של מסדי הנתונים בפרויקט הזה. מקבל את האפשרות --location להצגת רשימה של מסדי נתונים באזור מסוים. למידע על שמות אזורים שבהם ניתן להשתמש באפשרות הזו, ראו בחירת מיקומים לפרויקט.
database:profile יוצר פרופיל של פעולות במסד הנתונים של הפרויקט הפעיל. לפרטים נוספים אפשר לקרוא את סוגי הפעולות במסד נתונים בזמן אמת.
database:push דוחפים נתונים חדשים לרשימה במיקום שצוין במסד הנתונים של הפרויקט הפעיל. מקבל קלט מקובץ, STDIN או ארגומנט של שורת פקודה.
database:remove מחיקת כל הנתונים במיקום ספציפי במסד הנתונים של הפרויקט הפעיל.
database:set הפעולה מחליפה את כל הנתונים במיקום שצוין במסד הנתונים של הפרויקט הפעיל. מקבל קלט מקובץ, מ-STDIN או מארגומנט של שורת פקודה.
database:update מבצע עדכון חלקי במיקום שצוין במסד הנתונים של הפרויקט הפעיל. מקבל קלט מקובץ, STDIN או ארגומנט של שורת פקודה.

פקודות של הגדרת תצורה מרחוק

פקודה תיאור
remoteconfig:versions:list \
--limit NUMBER_OF_VERSIONS
מציין את עשר הגרסאות האחרונות של התבנית. מציינים את הערך 0 כדי להחזיר את כל הגרסאות הקיימות. לחלופין, אפשר להעביר את האפשרות --limit כדי להגביל את מספר הגרסאות שמוחזרות.
remoteconfig:get \
--v, version_number VERSION_NUMBER
--o, פלט FILENAME
הפונקציה מקבלת את התבנית לפי גרסה (ברירת המחדל היא הגרסה העדכנית ביותר) ומפיקה בטבלה את קבוצות הפרמטרים, הפרמטרים, שמות התנאים והגרסה שלהם. אפשר גם לכתוב את הפלט בקובץ ספציפי באמצעות -o, FILENAME.
remoteconfig:rollback \
--v, version_number VERSION_NUMBER
--force
מחזיר את התבנית של הגדרת התצורה מרחוק למספר גרסה קודם שצוין או חוזר לגרסה הקודמת (גרסה 1- נוכחית) המוגדר כברירת מחדל. אם לא עוברים את --force, מוצגת בקשה ל-Y/N לפני שממשיכים למצב הקודם.