שיתוף משאבי פרויקט בין מספר אתרים

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

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

שלב 1: מעדכנים את גרסת ה-CLI של Firebase

כדי לגשת לתכונות העדכניות ביותר של Firebase Hosting, מעדכנים לגרסה האחרונה של ה-CLI של Firebase.

שלב 2: מוסיפים אתרים נוספים

אפשר להוסיף אתרים נוספים לפרויקט Firebase באחת מהשיטות הבאות:

  • שימוש בתהליך העבודה שמתואר בדף Hosting במסוף Firebase

  • משתמשים בפקודה Firebase ב-CLI: firebase hosting:sites:create SITE_ID

  • שימוש ב-API ל-REST של Hosting: projects.sites.create

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

  • SITE_ID.web.app
  • SITE_ID.firebaseapp.com

מכיוון שה-SITE_ID משמש לכתובות ה-URL האלה, למזהה האתר יש את הדרישות הבאות:

  • חייבת להיות תווית שם מארח תקינה, כלומר היא לא יכולה להכיל את הערכים .,‏ _ וכו'.
  • האורך המותר הוא 30 תווים לכל היותר
  • השם חייב להיות ייחודי ברמת Firebase

אפשר גם להוסיף דומיינים מותאמים אישית לכל אתר כדי להציג את אותו תוכן והגדרה בכמה כתובות URL.

מחיקת אתר משני

אפשר למחוק אתרים לא רצויים מפרויקט Firebase באחת מהשיטות הבאות:

  • שימוש בתהליך העבודה שמתואר בדף Hosting במסוף Firebase

  • משתמשים בפקודה Firebase ב-CLI: firebase hosting:sites:delete SITE_ID

  • שימוש ב-API ל-REST של Hosting: projects.sites.delete

חשוב לזכור: לא ניתן למחוק את אתר ברירת המחדל, שמזהה ה-SITE_ID שלו זהה למזהה הפרויקט ב-Firebase.

שלב 3: מגדירים יעדים לפריסה של האתרים

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

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

firebase target:apply hosting TARGET_NAME RESOURCE_IDENTIFIER

כאשר הפרמטרים הם:

  • 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

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

שלב 4: מגדירים את הגדרות האירוח לכל אתר

כשמגדירים את הגדרות האירוח של האתר בקובץ firebase.json, צריך להשתמש ב-TARGET_NAME שהוחל על האתר.

  • אם קובץ 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
        }
      ]
    }
    
  • אם קובץ firebase.json מגדיר את ההגדרות לאתר אחד בלבד, אין צורך להשתמש בפורמט מערך:

    {
      "hosting": {
          "target": "blog",
          "public": "dist",
    
          // ...
    
          "rewrites": [...]
      }
    }
    

שלב 5: בדיקה מקומית, תצוגה מקדימה של השינויים ופריסה באתרים

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

פקודה תיאור
firebase emulators:start --only hosting הדמיה של התוכן וההגדרות של Hosting באתר Hosting שמוגדר כברירת מחדל בכתובת URL שמתארחת באופן מקומי
firebase emulators:start --only hosting:TARGET_NAME הדמיה של התוכן וההגדרות של Hosting באתר Hosting שצוין בכתובת URL שמתארח באופן מקומי
firebase hosting:channel:deploy \
CHANNEL_ID
פריסת התוכן וההגדרות של Hosting באתר Hosting שמוגדר כברירת מחדל בכתובת URL של תצוגה מקדימה
firebase hosting:channel:deploy \
CHANNEL_ID --only TARGET_NAME
פריסת התוכן וההגדרות של Hosting באתר Hosting שצוין בכתובת URL של תצוגה מקדימה
firebase deploy --only hosting פריסת התוכן וההגדרות של Hosting בערוץ החי של כל האתרים של Hosting שהוגדרו ב-firebase.json
firebase deploy --only hosting:TARGET_NAME פריסת התוכן וההגדרות של Hosting בערוץ החי של האתר Hosting שצוין
פקודה תיאור
(לא מומלץ, במקום זאת יש להשתמש ב-emulators:start)
firebase serve --only hosting
הצגת התוכן וההגדרות של Hosting באתר Hosting שמוגדר כברירת מחדל בכתובת URL שמתארחת באופן מקומי
(לא מומלץ, במקום זאת יש להשתמש ב-emulators:start)
firebase serve --only hosting:TARGET_NAME
הצגת התוכן וההגדרות של Hosting באתר Hosting שצוין בכתובת URL שמתארח באופן מקומי