יעדי פריסה הם שמות מקוצרים (שאתם מגדירים בעצמכם) של משאבי Firebase בפרויקט ב-Firebase, כמו אתר Hosting עם נכסים סטטיים ייחודיים או קבוצה של מכונות Realtime Database עם אותם כללי אבטחה.
יעדי פריסה שימושיים כשיש לכם מספר אתרים של Hosting, מספר קטגוריות של Cloud Storage או מספר מכונות של Realtime Database. בעזרת יעדי פריסה, אפשר להשתמש ב-CLI של Firebase כדי לפרוס הגדרות למשאב ספציפי או לקבוצת משאבים ב-Firebase בפרויקט, כמו:
- הגדרות האירוח של כל אחד מהאתרים ב-Hosting
- נכסים סטטיים מספריית הפרויקט לכל אחד מהאתרים של Hosting
- כללי אבטחה ששותפו בין כמה מכונות Realtime Database או בין כמה קטגוריות Cloud Storage
כדי להגדיר יעד לפריסה:
- מחילים את
TARGET_NAME
על המשאב או על קבוצת המשאבים של Firebase שאליהם רוצים לטרגט. - בקובץ
firebase.json
, מפנים לקובץTARGET_NAME
המשויך כשמגדירים את ההגדרות של כל משאב או קבוצת משאבים.
כשמריצים פקודות CLI של Firebase (כמו firebase deploy
), ה-CLI של Firebase מקצה לכל TARGET_NAME
את המשאבים המשויכים שלו ב-Firebase. לאחר מכן, ה-CLI מעביר לפרויקט ב-Firebase את ההגדרות של כל המשאב.
הגדרת יעדי פריסה למשאבי Firebase
באמצעות ה-CLI של Firebase, מחילים TARGET_NAME
(מזהה שם קצר שאתם מגדירים בעצמכם) על משאב Firebase או על קבוצה של משאבי Firebase.
ב-Firebase יש תמיכה ביעדים לפריסה עבור:
- אתרים של Firebase Hosting
- קטגוריות אחסון ב-Cloud Storage for Firebase
- מכונות Firebase Realtime Database
ההגדרות של יעדי הפריסה מאוחסנות בקובץ .firebaserc
בספריית הפרויקט, כך שצריך להגדיר את יעדי הפריסה רק פעם אחת לכל פרויקט.
הגדרת יעדי פריסה ל-Hosting
כדי ליצור יעד פריסת אתר ולהחיל TARGET_NAME
על אתר Hosting, מריצים את הפקודה הבאה ב-CLI:
firebase target:apply TYPE TARGET_NAME RESOURCE_IDENTIFIER
כאשר הפרמטרים הם:
TYPE – סוג המשאב הרלוונטי ב-Firebase
- לאתרים מסוג Firebase Hosting, משתמשים ב-
hosting
.
- לאתרים מסוג Firebase Hosting, משתמשים ב-
TARGET_NAME – שם ייחודי לאתר Hosting שאליו אתם פורסים
RESOURCE_IDENTIFIER – ה-
SITE_ID
של האתר Hosting כפי שמופיע בפרויקט Firebase
לדוגמה, אם יצרתם שני אתרים (myapp-blog
ו-myapp-app
) בפרויקט Firebase, תוכלו להחיל TARGET_NAME
ייחודי (blog
ו-app
, בהתאמה) על כל אתר על ידי הפעלת הפקודות הבאות:
firebase target:apply hosting blog myapp-blog
firebase target:apply hosting app myapp-app
הגדרת יעדי פריסה ל-Cloud Storage או ל-Realtime Database
כדי ליצור יעד פריסה ולהחיל TARGET_NAME
על קבוצה של משאבי Cloud Storage או Realtime Database, מריצים את הפקודה הבאה ב-CLI:
firebase target:apply TYPE TARGET_NAME RESOURCE-1_IDENTIFIER RESOURCE-2_IDENTIFIER ...
כאשר הפרמטרים הם:
TYPE – סוג המשאב הרלוונטי ב-Firebase
- בקטגוריות Cloud Storage, משתמשים ב-
storage
. - במכונות Realtime Database, משתמשים ב-
database
.
- בקטגוריות Cloud Storage, משתמשים ב-
TARGET_NAME – שם ייחודי למשאב או לקבוצת המשאבים שמשתפים כללי אבטחה
RESOURCE_IDENTIFIER – המזהים של המשאבים כפי שמפורטים בפרויקט Firebase (כמו שמות של קטגוריות אחסון או מזהי מכונות של מסדי נתונים) שכוללים את אותם כללי אבטחה
לדוגמה, אפשר להחיל את TARGET_NAME
של main
על קבוצה של שלוש קטגוריות Cloud Storage אזוריות (שכוללות את אותם כללי אבטחה) באמצעות הפקודה הבאה:
firebase target:apply storage main myproject.firebasestorage.app myproject-eu myproject-ja
שימו לב ש-myproject.firebasestorage.app
הוא המזהה של קטגוריית ברירת המחדל, ו-myproject-eu
ו-myproject-ja
הן שתי קטגוריות נוספות שנוצרו בפרויקט Firebase.
הגדרת קובץ firebase.json לשימוש ביעדים לפריסה
אחרי שמגדירים יעדים לפריסה של משאבי Firebase, צריך להפנות לכל TARGET_NAME
שהוחל בקובץ התצורה firebase.json
:
- יוצרים מערך של אובייקטי תצורה לכל משאב
TYPE
ב-Firebase (hosting
,storage
אוdatabase
). - במערכים, מציינים את
target
(באמצעותTARGET_NAME
) ומגדירים את ההגדרות של המשאב או קבוצת המשאבים המשויכים ב-Firebase.
בהמשך לדוגמאות שלמעלה, שבהן לפרויקט Firebase יש שני אתרים מסוג Hosting ושלושה קטגוריות מסוג Cloud Storage (שחולקים את אותם כללי אבטחה), הקובץ firebase.json
ייראה כך:
{ "hosting": [ { "target": "blog", // "blog" is the applied TARGET_NAME for the Hosting site "myapp-blog" "public": "blog/dist", // contents of this folder are deployed to the site "myapp-blog" // ... }, { "target": "app", // "app" is the applied TARGET_NAME for the Hosting site "myapp-app" "public": "app/dist", // contents of this folder are deployed to the site "myapp-app" // ... "rewrites": [...] // You can define specific Hosting configurations for each site } ] } { "storage": [ { "target": "main", // "main" is the applied TARGET_NAME for the group of Cloud Storage buckets "rules": "storage.main.rules" // the file that contains the shared security rules } ] }
אם יש לכם כמה הגדרות למשאבים, תוכלו ליצור כמה יעדי פריסה ולציין כל אחד מהם בקובץ firebase.json
. כל המשאבים המשויכים יפורסו יחד כשמריצים את firebase deploy
.
ניהול יעדים לפריסה
ההגדרות של יעדי הפריסה נשמרות בקובץ .firebaserc
בספריית הפרויקט. כדי לנהל את יעדי הפריסה של הפרויקט, אפשר להריץ כל אחת מהפקודות הבאות מהשורש של ספריית הפרויקט.
פקודה | תיאור |
---|---|
firebase target
|
הצגת יעדי הפריסה של ספריית הפרויקט הנוכחית |
firebase target:remove \
|
הסרת משאב מהיעד שאליו הוא הוקצה |
firebase target:clear \
|
הסרת כל המשאבים או האתר Hosting מהיעד שצוין |
הפקודות target:remove
ו-target:clear
מעדכנות באופן אוטומטי את ההגדרות של יעד הפריסה בקובץ .firebaserc
בספריית הפרויקט.
בדיקה מקומית לפני הפריסה
מריצים אחת מהפקודות הבאות מהשורש של ספריית הפרויקט.
פקודה | תיאור |
---|---|
firebase emulators:start
|
הדמיה של כל המשאבים שהוגדרו בספריית הפרויקט |
firebase emulators:start \ |
הדמיה של התוכן וההגדרות של Hosting באתר Hosting שצוין בלבד |
firebase emulators:start \
|
הדמיה של קובץ הכללים בלבד ליעד Cloud Storage שצוין |
firebase emulators:start \
|
הדמיה של קובץ הכללים בלבד ליעד Realtime Database שצוין |
מידע נוסף על הגדרה ושימוש ב-Firebase Local Emulator Suite
פריסת משאבים ספציפיים של Firebase
מריצים אחת מהפקודות הבאות מהשורש של ספריית הפרויקט.
פקודה | תיאור |
---|---|
firebase deploy
|
יצירת גרסה של כל המשאבים שניתן לפרוס בספריית הפרויקט |
firebase deploy \
|
פריסה של התוכן וההגדרות של Hosting באתר Hosting שצוין, בערוץ החי של האתר |
firebase hosting:channel:deploy CHANNEL_ID \ |
פריסת התוכן וההגדרות של Hosting באתר Hosting שצוין, רק בערוץ תצוגה מקדימה של האתר |
firebase deploy \
|
פריסת קובץ הכללים בלבד ליעד Cloud Storage שצוין |
firebase deploy \
|
פריסת קובץ הכללים בלבד ליעד Realtime Database שצוין |