مشاركة موارد المشروع عبر مواقع متعددة

يمكنك إعداد موقع إلكتروني واحد أو أكثر لاستضافة Firebase في مشروع واحد على Firebase. نظرًا لأن جميع المواقع موجودة في نفس مشروع Firebase، يمكن لجميع المواقع الوصول إلى موارد Firebase الأخرى الخاصة بالمشروع.

من خلال إعداد عدة مواقع استضافة ضمن مشروع Firebase نفسه، يمكنك مشاركة موارد Firebase بسهولة أكبر بين المواقع والتطبيقات ذات الصلة. على سبيل المثال، إذا أعددت مدونتك ولوحة المشرف والتطبيق العام كمواقع ويب فردية في مشروع Firebase نفسه، يمكن لجميع هذه التطبيقات مشاركة قاعدة بيانات مستخدم مصادقة Firebase نفسها، مع وجود نطاقات أو محتوى فريد في الوقت نفسه.

الخطوة 1: تحديث إصدار واجهة سطر الأوامر في Firebase

يمكنك الوصول إلى أحدث ميزات "استضافة Firebase" من خلال التحديث إلى أحدث إصدار من واجهة سطر الأوامر في Firebase.

الخطوة 2: إضافة مواقع إلكترونية أخرى

يمكنك إضافة مواقع إلكترونية أخرى إلى مشروع Firebase باستخدام إحدى الطرق التالية:

  • استخدِم سير العمل من خلال صفحة الاستضافة في وحدة تحكُّم Firebase.

  • استخدِم أمر Firebase CLI : firebase hosting:sites:create SITE_ID

  • استخدام واجهة برمجة تطبيقات Hosting REST: projects.sites.create

في كل طريقة من هاتَين الطريقتَين، عليك تحديد SITE_ID يُستخدم لإنشاء النطاقات الفرعية التلقائية التي يوفّرها Firebase للموقع الإلكتروني:

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

بما أنّه يتم استخدام SITE_ID لعناوين URL هذه، يجب أن يستوفي رقم تعريف الموقع الإلكتروني المتطلبات التالية:

  • يجب أن يكون تصنيف اسم مضيف صالحًا، ما يعني أنّه لا يمكن أن يحتوي على . أو _ أو غير ذلك.
  • يجب ألا يزيد عدد الأحرف عن 30 حرفًا
  • يجب أن يكون فريدًا عالميًا ضمن Firebase

لكل موقع إلكتروني، يمكنك اختياريًا إضافة نطاقات مخصّصة لعرض المحتوى والإعداد نفسهما إلى عناوين URL متعددة.

حذف موقع إلكتروني ثانوي

احذف المواقع الإلكترونية غير المرغوب فيها من مشروع Firebase باستخدام إحدى الطرق التالية:

  • استخدِم سير العمل من خلال صفحة الاستضافة في وحدة تحكُّم Firebase.

  • استخدِم أمر Firebase CLI : firebase hosting:sites:delete SITE_ID

  • استخدام واجهة برمجة تطبيقات Hosting REST: projects.sites.delete

تجدر الإشارة إلى أنّه لا يمكنك حذف الموقع الإلكتروني التلقائي، الذي له نفس SITE_ID مثل رقم تعريف مشروع Firebase.

الخطوة 3: إعداد نشر أهداف لمواقعك الإلكترونية

عندما تكون لديك عدة مواقع وتشغل أوامر نشر واجهة سطر الأوامر في Firebase، يحتاج واجهة سطر الأوامر إلى طريقة لمعرفة الإعدادات التي يجب نشرها لكل موقع إلكتروني. من خلال أهداف النشر، يمكنك تحديد موقع إلكتروني محدّد بشكل فريد باستخدام TARGET_NAME في ملف إعداد firebase.json وفي أوامر واجهة سطر الأوامر في Firebase لاختباره أو نشره على مواقعك الإلكترونية.

لإنشاء هدف نشر وتطبيق TARGET_NAME على موقع استضافة، شغِّل أمر CLI التالي من جذر دليل المشروع:

firebase target:apply hosting TARGET_NAME RESOURCE_IDENTIFIER

أماكن ظهور المَعلمات:

  • TARGET_NAME — اسم فريد (حددته بنفسك) لموقع المضيف الذي تنشر فيه

  • RESOURCE_IDENTIFIER: 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

يتم تخزين إعدادات النشرات المستهدفة في ملف .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 يحاكي محتوى الاستضافة وإعدادات الموقع الإلكتروني للاستضافة default على عنوان URL مستضاف محليًا.
firebase emulators:start --only hosting:TARGET_NAME يحاكي محتوى الاستضافة وإعدادات موقع الاستضافة الإلكتروني المحدّد على عنوان URL مستضاف محليًا.
firebase hosting:channel:deploy \
CHANNEL_ID
تتيح هذه السياسة نشر محتوى "الاستضافة" وضبط إعدادات الموقع الإلكتروني للاستضافة تلقائي على عنوان URL للمعاينة.
firebase hosting:channel:deploy \
CHANNEL_ID --only TARGET_NAME
نشر محتوى الاستضافة وضبط إعدادات موقع الاستضافة الإلكتروني المحدّد على عنوان URL للمعاينة
firebase deploy --only hosting يتم نشر محتوى الاستضافة وإعداداته في القناة المباشرة لجميع مواقع الاستضافة التي تم ضبطها في firebase.json.
firebase deploy --only hosting:TARGET_NAME نشر محتوى الاستضافة وإعداداته في القناة المباشرة الخاصة بموقع الاستضافة الإلكتروني المحدّد
الطلب الوصف
(لا يُنصح به، ولكن استخدِم emulators:start بدلاً منه)
firebase serve --only hosting
عرض محتوى الاستضافة وإعدادات الموقع الإلكتروني المستضاف default على عنوان URL مستضاف محليًا
(لا يُنصح به، ولكن استخدِم emulators:start بدلاً منه)
firebase serve --only hosting:TARGET_NAME
عرض محتوى الاستضافة وإعدادات موقع الاستضافة الإلكتروني المحدّد على عنوان URL مستضاف محليًا