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

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

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

שלב 1: עדכון גרסת Firebase CLI

כדי לקבל גישה לתכונות העדכניות ביותר של Firebase Hosting, צריך לעבור לגרסה האחרונה של Firebase CLI.

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

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

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

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

  • שימוש ב-Hosting REST API: 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

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

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

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

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

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

firebase target:apply hosting TARGET_NAME RESOURCE_IDENTIFIER

הפרמטרים הם:

  • TARGET_NAME – שם ייחודי (שהגדרתם בעצמכם) לאתר שאליו אתם פורסים את התגHosting

  • RESOURCE_IDENTIFIERSITE_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: הגדרת תצורת האירוח לכל אתר

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

  • אם קובץ 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 שמוגדר כברירת מחדל בכתובת URL שמארחת באופן מקומיHosting
firebase emulators:start --only hosting:TARGET_NAME מדמה את התוכן וההגדרה של האתר שצוין בכתובת URL שמתארחת באופן מקומיHostingHosting
firebase hosting:channel:deploy \
CHANNEL_ID
פריסת התוכן וההגדרות של אתר Hosting default Hosting בכתובת URL לתצוגה מקדימה
firebase hosting:channel:deploy \
CHANNEL_ID --only TARGET_NAME
פריסת התוכן וההגדרות של האתר שצוין בכתובת URL לתצוגה מקדימהHostingHosting
firebase deploy --only hosting פריסת התוכן וההגדרות של Hosting בערוץ הפעיל של כל האתרים של Hosting שהוגדרו ב-firebase.json
firebase deploy --only hosting:TARGET_NAME פריסת התוכן וההגדרות של Hosting בערוץ הפעיל של אתר Hosting שצוין
פקודה תיאור
(לא מומלץ; כדאי להשתמש ב-emulators:start במקום זאת)
firebase serve --only hosting
מציג את התוכן וההגדרות של אתר Hosting ברירת המחדל בכתובת URL שמארחת באופן מקומיHosting
(לא מומלץ; כדאי להשתמש ב-emulators:start במקום זאת)
firebase serve --only hosting:TARGET_NAME
הצגת התוכן וההגדרות של האתר שצוין בכתובת URL שמתארחת באופן מקומיHostingHosting