Join us in person and online for Firebase Summit on October 18, 2022. Learn how Firebase can help you accelerate app development, release your app with confidence, and scale with ease. Register now

התקן, הגדר ושלב את Local Emulator Suite

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

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

התקן את חבילת האימולטור המקומי

לפני התקנת חבילת האמולטור תזדקק ל:

  • Node.js גרסה 8.0 ומעלה.
  • Java JDK גרסה 11 ומעלה.

כדי להתקין את חבילת האמולטור:

  1. התקן את Firebase CLI . אם עדיין לא התקנת את Firebase CLI, התקן אותו כעת . תזדקק לגרסת CLI 8.14.0 ומעלה כדי להשתמש בחבילת האמולטור. אתה יכול לבדוק איזו גרסה התקנת באמצעות הפקודה הבאה:
    firebase --version
  2. אם עדיין לא עשית זאת, אתחל את ספריית העבודה הנוכחית כפרויקט Firebase, בצע את ההנחיות על המסך כדי לציין באילו מוצרים להשתמש:
    firebase init
  3. הגדר את חבילת האמולטור. פקודה זו מפעילה אשף תצורה המאפשר לך לבחור אמולטורים מעניינים, להוריד את הקבצים הבינאריים של האמולטור המתאימים ולהגדיר יציאות אמולטור אם ברירות המחדל אינן מתאימות.
    firebase init emulators

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

הגדר את חבילת אמולטור

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

  • שנה יציאות אמולטור על ידי הפעלת אמולטורים של firebase init emulators או על ידי עריכה ידנית של firebase.json .
  • שנה את הנתיב להגדרות כללי אבטחה על ידי עריכה ידנית של firebase.json .

אם לא תגדיר את ההגדרות הללו, האמולטורים יקשיבו ביציאות ברירת המחדל שלהם, והאמולטורים של Cloud Firestore, Realtime Database ו-Cloud Storage יפעלו עם אבטחת נתונים פתוחה.

פקודה תיאור
אמולטורים של init הפעל אשף אתחול האמולטור. זהה אמולטורים להתקנה וציין אופציונלי הגדרות יציאת אמולטור. init emulators אינו הרסני; קבלת ברירות מחדל תשמר את תצורת האמולטור הנוכחית.

תצורת יציאה

כל אמולטור נקשר ליציאה אחרת במחשב שלך עם ערך ברירת מחדל מועדף.

אמולטור יציאת ברירת מחדל
אימות 9099
ממשק המשתמש של Emulator Suite 4000
פונקציות ענן 5001
Eventarc 9299
מסד נתונים בזמן אמת 9000
Cloud Firestore 8080
אחסון בענן 9199
אירוח ב-Firebase 5000
פאב/סאב 8085

תצורת כללי אבטחה

האמולטורים ייקחו את תצורת כללי האבטחה ממפתחות התצורה של database , firestore ומפתחות storage ב- firebase.json .

{
  // Existing firebase configuration ...
  "database": {
    "rules": "database.rules.json"
  },
  "firestore": {
    "rules": "firestore.rules"
  },
  "storage": {
    "rules": "storage.rules"
  }

  // ...

  // Optional emulator configuration. Default
  // values are used if absent.
  "emulators": {
    "firestore": {
      "port": "8080"
    },
    "ui": {
      "enabled": true,      // Default is `true`
      "port": 4000          // If unspecified, see CLI log for selected port
    },
    "auth": {
      "port": "9099"
    },
    "pubsub": {
      "port": "8085"
    }
  }
}

ציון אפשרויות Java

אמולטור Realtime Database, אמולטור Cloud Firestore וחלק מאמולטור Cloud Storage מבוססים על Java, שניתן להתאים אישית עם דגלי JVM באמצעות משתנה הסביבה JAVA_TOOL_OPTIONS .

לדוגמה, אם אתה נתקל בשגיאות הקשורות ל-Java Heap Space, תוכל להגדיל את גודל הערימה המקסימלית של Java ל-4GB:

export JAVA_TOOL_OPTIONS="-Xmx4g"
firebase emulators:start

ניתן לציין מספר דגלים במירכאות מופרדות ברווחים, כמו JAVA_TOOL_OPTIONS="-Xms2g -Xmx4g" . הדגלים משפיעים רק על הרכיבים מבוססי Java של האמולטורים ואין להם השפעה על חלקים אחרים של Firebase CLI, כגון Emulator Suite UI.

הפעל אמולטורים

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

פקודה תיאור
אמולטורים: התחל הפעל אמולטורים עבור מוצרי Firebase המוגדרים ב- firebase.json . תהליכי האמולטור ימשיכו לפעול עד שייעצרו במפורש. קריאת emulators:start תוריד את האמולטורים ל-~/.cache/firebase/emulators/ אם הם עדיין לא מותקנים.
דֶגֶל תיאור
--only אופציונאלי. הגבל אילו אמולטורים מתחילים. ספק רשימה מופרדת בפסיקים של שמות אמולטורים, תוך ציון אחד או יותר של 'auth', 'database', 'firestore', 'functions', 'hosting' או 'pubsub'.
--inspect-functions debug_port אופציונאלי. השתמש עם אמולטור Cloud Functions כדי לאפשר איתור באגים בנקודות עצירה של פונקציות ביציאה שצוינה (או ביציאת ברירת המחדל 9229 אם הארגומנט הושמט). שים לב שכאשר הדגל הזה מסופק, אמולטור Cloud Functions עובר למצב ביצוע סידורי מיוחד שבו פונקציות מבוצעות בתהליך בודד, בסדר רציף (FIFO); זה מפשט את ניפוי הפונקציות, אם כי ההתנהגות שונה מביצוע מקביל של פונקציות רב-תהליכיות בענן.
--export-on-exit= אופציונאלי. השתמש עם האימות, Cloud Firestore, מסד נתונים בזמן אמת או אמולטור Cloud Storage. הוראה לאמולטור/ים לייצא נתונים לספרייה כאשר מתרחש כיבוי, כמתואר עבור הפקודה emulators:export . ניתן לציין את ספריית הייצוא עם הדגל הזה: firebase emulators:start --export-on-exit=./saved-data . אם נעשה שימוש --import , נתיב הייצוא מוגדר כברירת מחדל זהה; לדוגמה: firebase emulators:start --import=./data-path --export-on-exit . לבסוף, אם תרצה, העבירו נתיבים שונים של ספרייה --import --export-on-exit .
--import= import_directory אופציונאלי. השתמש עם האימות, Cloud Firestore, מסד נתונים בזמן אמת או אמולטור Cloud Storage. ייבא נתונים שנשמרו באמצעות אפשרות ההפעלה --export-on-exit או הפקודה emulators:export למופע הפעלה של Authentication, Cloud Firestore, Realtime Database או Cloud Storage emulator. כל הנתונים שנמצאים כרגע בזיכרון האמולטור יהיו מוגזמים.
emulators: exec scriptpath הפעל את הסקריפט ב- scriptpath לאחר הפעלת אמולטורים עבור מוצרי Firebase המוגדרים ב- firebase.json . תהליכי האמולטור ייפסקו אוטומטית כאשר הסקריפט יסיים לפעול.
דֶגֶל תיאור
--only אופציונאלי. הגבל אילו אמולטורים מתחילים. ספק רשימה מופרדת בפסיקים של שמות אמולטורים, תוך ציון אחד או יותר מ-'firestore', 'database', 'functions', 'hosting' או 'pubsub'.
--inspect-functions debug_port אופציונאלי. השתמש עם אמולטור Cloud Functions כדי לאפשר איתור באגים בנקודות עצירה של פונקציות ביציאה שצוינה (או ביציאת ברירת המחדל 9229 אם הארגומנט הושמט). שים לב שכאשר הדגל הזה מסופק, אמולטור Cloud Functions עובר למצב ביצוע סידורי מיוחד שבו פונקציות מבוצעות בתהליך בודד, בסדר רציף (FIFO); זה מפשט את ניפוי הפונקציות, אם כי ההתנהגות שונה מביצוע מקביל של פונקציות רב-תהליכיות בענן.
--export-on-exit= אופציונאלי. השתמש עם האימות, Cloud Firestore, מסד נתונים בזמן אמת או אמולטור Cloud Storage. הוראה לאמולטור/ים לייצא נתונים לספרייה כאשר מתרחש כיבוי, כמתואר עבור הפקודה emulators:export . ניתן לציין את ספריית הייצוא עם הדגל הזה: firebase emulators:start --export-on-exit=./saved-data . אם נעשה שימוש --import , נתיב הייצוא מוגדר כברירת מחדל זהה; לדוגמה: firebase emulators:start --import=./data-path --export-on-exit . לבסוף, אם תרצה, העבירו נתיבים שונים של ספרייה --import --export-on-exit .
--import= import_directory אופציונאלי. השתמש עם האימות, Cloud Firestore, מסד נתונים בזמן אמת או אמולטור Cloud Storage. ייבא נתונים שנשמרו באמצעות אפשרות ההפעלה --export-on-exit או הפקודה emulators:export למופע הפעלה של Authentication, Cloud Firestore, Realtime Database או Cloud Storage emulator. כל הנתונים שנמצאים כעת בזיכרון האמולטור יוחלפו.
--ui אופציונאלי. הפעל את ממשק המשתמש של האמולטור במהלך הביצוע.

שיטת ה- firebase emulators:exec מתאימה יותר בדרך כלל לזרימות עבודה מתמשכות של אינטגרציה.

ייצוא ויבוא נתוני אמולטור

אתה יכול לייצא נתונים מהאמולטורים של אימות, Cloud Firestore, Realtime Database ו-Cloud Storage כדי להשתמש בהם כמערך נתונים בסיסי משותף שניתן לשיתוף. ניתן לייבא מערכי נתונים אלה באמצעות דגל --import , כמתואר לעיל.

emulators: export export_directory

אימות, Cloud Firestore, מסד נתונים בזמן אמת או אמולטור Cloud Storage . ייצא נתונים ממופע של Cloud Firestore, Realtime Database או Cloud Storage emulator. ה- export_directory שצוין תיווצר אם היא עדיין לא קיימת. אם הספרייה שצוינה קיימת, תתבקש לאשר שיש לדרוס את נתוני הייצוא הקודמים. אתה יכול לדלג על הנחיה זו באמצעות הדגל --force . ספריית הייצוא מכילה קובץ מניפסט נתונים, firebase-export-metadata.json .

אתה יכול להורות לאמולטורים לייצא נתונים אוטומטית כאשר הם נסגרים באמצעות --export-on-exit המתוארים לעיל.

השתלב עם מערכת ה-CI שלך

הפעלת תמונות Emulator Suite מכולות

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

יש לציין כמה בעיות:

  • קובצי JAR מותקנים ונשמרים במטמון ב- ~/.cache/firebase/emulators/ .

    • ייתכן שתרצה להוסיף נתיב זה לתצורת מטמון ה-CI שלך כדי למנוע הורדות חוזרות.
  • אם אין לך קובץ firebase.json במאגר שלך, עליך להוסיף ארגומנט שורת פקודה לפקודה emulators:start או emulators:exec כדי לציין אילו אמולטורים יש להפעיל. לדוגמה,
    --only functions,firestore .

צור אסימון אישור (אימולטור אירוח בלבד)

אם זרימות העבודה המתמשכות של האינטגרציה שלך מסתמכות על Firebase Hosting, תצטרך להתחבר באמצעות אסימון כדי להפעיל את firebase emulators:exec . האמולטורים האחרים אינם דורשים התחברות.

כדי ליצור אסימון, הפעל את firebase login:ci בסביבה המקומית שלך; אין לבצע זאת ממערכת CI. בצע את ההוראות לאימות. אתה צריך לבצע את השלב הזה רק פעם אחת בכל פרויקט, מכיוון שהאסימון יהיה תקף על פני בנייה. יש להתייחס אל האסימון כאל סיסמה; לוודא שזה נשמר בסוד.

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

כמוצא אחרון, אתה יכול פשוט לכלול את האסימון בסקריפט הבנייה שלך, אבל וודא שלצדדים לא מהימנים אין גישה. עבור גישה מקודדת קשה זו, אתה יכול להוסיף --token "YOUR_TOKEN_STRING_HERE" firebase emulators:exec .

השתמש ב- Emulator Hub REST API

רשימת אמולטורים פועלים

כדי לרשום את האמולטורים הפועלים כעת, שלח בקשת GET לנקודת הקצה /emulators של Emulator Hub.

curl localhost:4400/emulators

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

{
  "hub":{
    "name": "hub",
    "host": "localhost",
    "port": 4400
  },
  "functions": {
    "name": "functions",
    "host": "localhost",
    "port": 5001
  }
  "firestore": {
    "name": "firestore",
    "host": "localhost",
    "port": 8080
  }
}

הפעל / השבת מפעילי פונקציות רקע

במצבים מסוימים תצטרכו להשבית זמנית את מפעילי הפונקציות וההרחבות המקומיות. לדוגמה, ייתכן שתרצה למחוק את כל הנתונים באמולטור Cloud Firestore מבלי להפעיל פונקציות onDelete של Cloud Functions או Extensions.

כדי להשבית זמנית מפעילי פונקציות מקומיות, שלח בקשת PUT לנקודת הקצה /functions/disableBackgroundTriggers של רכזת האמולטור.

curl -X PUT localhost:4400/functions/disableBackgroundTriggers

התוצאה תהיה אובייקט JSON המפרט את המצב הנוכחי.

{
  "enabled": false
}

כדי להפעיל מפעילי פונקציות מקומיות לאחר שהם הושבתו, שלח בקשת PUT לנקודת הקצה /functions/enableBackgroundTriggers של רכזת האמולטור.

curl -X PUT localhost:4400/functions/enableBackgroundTriggers

התוצאה תהיה אובייקט JSON המפרט את המצב הנוכחי.

{
  "enabled": true
}

שילובי Emulator SDK

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

זמינות SDK של לקוח

דְמוּי אָדָם פלטפורמות של אפל אינטרנט ממשק המשתמש של Firebase
דְמוּי אָדָם
ממשק המשתמש של Firebase
iOS
ממשק המשתמש של Firebase
אינטרנט
מסד נתונים בזמן אמת 19.4.0 7.2.0 8.0.0 6.4.0 עתיד לא
Cloud Firestore 21.6.0 7.2.0 8.0.0 6.4.0 עתיד לא
אימות 20.0.0 7.0.0 8.0.0 7.0.0 עתיד עתיד
אחסון בענן 20.0.0 8.0.0 8.4.0 לא לא לא
פונקציות ענן 19.1.0 7.2.0 8.0.0 לא לא לא
אירוח לא לא לא לא לא לא
הרחבות לא לא לא לא לא לא

זמינות SDK של Admin

צוֹמֶת Java פִּיתוֹן ללכת
מסד נתונים בזמן אמת 8.6.0 6.10.0 2.18.0 עתיד
Cloud Firestore 8.0.0 6.10.0 3.0.0 1.0.0
אימות 9.3.0 7.2.0 5.0.0 4.2.0
אחסון בענן 9.8.0 עתיד עתיד עתיד
פונקציות ענן לא לא לא לא
אירוח לא לא לא לא
הרחבות לא לא לא לא