منابع پروژه را در چندین سایت به اشتراک بگذارید

شما می‌توانید یک یا چند سایت Firebase Hosting در یک پروژه فایربیس واحد راه‌اندازی کنید. از آنجایی که همه سایت‌ها در یک پروژه فایربیس هستند، همه سایت‌ها می‌توانند به سایر منابع فایربیس پروژه دسترسی داشته باشند.

با تنظیم چندین سایت Hosting در یک پروژه Firebase، می‌توانید منابع Firebase را بین سایت‌ها و برنامه‌های مرتبط راحت‌تر به اشتراک بگذارید. به عنوان مثال، اگر وبلاگ، پنل مدیریت و برنامه عمومی خود را به عنوان سایت‌های جداگانه در یک پروژه Firebase تنظیم کنید، همه آنها می‌توانند پایگاه داده کاربر Firebase Authentication یکسانی را به اشتراک بگذارند، در حالی که دامنه‌ها یا محتوای منحصر به فرد خود را نیز دارند.

مرحله 1 : نسخه Firebase CLI خود را به‌روزرسانی کنید

با به‌روزرسانی به آخرین نسخه Firebase CLI، به جدیدترین ویژگی‌های Firebase Hosting دسترسی پیدا کنید.

مرحله ۲ : اضافه کردن سایت‌های دیگر

با استفاده از یکی از روش‌های زیر، سایت‌های بیشتری را به یک پروژه Firebase اضافه کنید:

  • از گردش کار در صفحه Hosting کنسول Firebase استفاده کنید

  • از دستور Firebase CLI استفاده کنید: firebase hosting:sites:create SITE_ID

  • از API Hosting REST استفاده کنید: 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 Hosting REST استفاده کنید: projects.sites.delete

توجه داشته باشید که نمی‌توانید سایت پیش‌فرض را حذف کنید، زیرا SITE_ID آن با شناسه پروژه Firebase شما یکسان است.

مرحله ۳ : اهداف استقرار را برای سایت‌های خود تنظیم کنید

وقتی چندین سایت دارید و دستورات استقرار Firebase CLI را اجرا می‌کنید، CLI به روشی نیاز دارد تا مشخص کند کدام تنظیمات باید به هر سایت اعزام شوند. با استفاده از deploy targets می‌توانید یک سایت خاص را با TARGET_NAME در فایل پیکربندی firebase.json و در دستورات Firebase CLI خود به طور منحصر به فرد برای آزمایش یا اعزام به سایت‌های خود شناسایی کنید.

برای ایجاد یک مقصد استقرار و اعمال TARGET_NAME به یک سایت Hosting ، دستور CLI زیر را از ریشه دایرکتوری پروژه خود اجرا کنید:

firebase target:apply hosting TARGET_NAME RESOURCE_IDENTIFIER

که پارامترها در آن قرار دارند:

  • TARGET_NAME — یک نام منحصر به فرد (که خودتان تعریف کرده‌اید) برای سایت Hosting که در حال استقرار آن هستید

  • RESOURCE_IDENTIFIER - شناسه سایت Hosting SITE_ID که در پروژه Firebase شما فهرست شده است.

برای مثال، اگر دو سایت ( myapp-blog و myapp-app ) در پروژه Firebase خود ایجاد کرده‌اید، می‌توانید با اجرای دستورات زیر، یک TARGET_NAME منحصر به فرد (به ترتیب blog و app ) را به هر سایت اعمال کنید:

firebase target:apply hosting blog myapp-blog
firebase target:apply hosting app myapp-app

تنظیمات مربوط به deploy targetها در فایل .firebaserc در دایرکتوری پروژه شما ذخیره می‌شوند، بنابراین شما فقط باید در هر پروژه یک بار deploy targetها را تنظیم کنید.

مرحله ۴ : پیکربندی میزبانی برای هر سایت را تعریف کنید

هنگام تعریف پیکربندی میزبانی یک سایت در فایل 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": [...]
      }
    }

مرحله ۵ : تست محلی، پیش‌نمایش تغییرات و استقرار در سایت‌های شما

هر یک از دستورات زیر را از ریشه دایرکتوری پروژه محلی خود اجرا کنید.

فرمان توضیحات
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 میزبانی شده محلی ارائه می‌دهد.