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

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

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

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

الخطوة 1: تحديث إصدار Firebase CLI

يمكنك الاستفادة من أحدث ميزات Firebase Hosting من خلال التحديث إلى أحدث إصدار من Firebase CLI.

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

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

  • استخدام سير العمل في صفحة Hosting لوحدة تحكّم Firebase

  • استخدِم الأمر Firebase في واجهة سطر الأوامر: 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 في واجهة سطر الأوامر: firebase hosting:sites:delete SITE_ID

  • استخدام Hosting REST API: projects.sites.delete

يُرجى العِلم أنّه لا يمكنك حذف الموقع الإلكتروني التلقائي الذي يتضمّن SITE_ID مماثلاً لرقم تعريف مشروعك على Firebase.

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

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

لإنشاء هدف نشر وتطبيق TARGET_NAME على موقع Hosting الإلكتروني، يمكنك تنفيذ الأمر التالي في سطر الأوامر من جذر دليل المشروع:

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: تحديد إعدادات الاستضافة لكل موقع إلكتروني

استخدِم TARGET_NAME المُطبَّقة على الموقع الإلكتروني عند تحديد إعدادات الت hosting في ملف 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 وإعدادات الموقع الإلكتروني التلقائي 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 مستضاف محليًا