Catch up on highlights from Firebase at Google I/O 2023. Learn more

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

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

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

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

قم بالوصول إلى أحدث ميزات استضافة Firebase عن طريق التحديث إلى أحدث إصدار من Firebase CLI .

الخطوة 2 : أضف مواقع إضافية

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

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

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

نظرًا لاستخدام SITE_ID لعناوين URL هذه ، فإن معرف الموقع يشتمل على المتطلبات التالية:

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

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

احذف موقع ثانوي

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

لاحظ أنه لا يمكنك حذف الموقع الافتراضي ، الذي له نفس SITE_ID مثل معرف مشروع Firebase.

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

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

لإنشاء هدف نشر وتطبيق 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 يحاكي محتوى الاستضافة وتكوين موقع الاستضافة الافتراضي على عنوان 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
يقدم محتوى الاستضافة وتكوين موقع الاستضافة الافتراضي على عنوان URL مستضاف محليًا
(غير مستحسن ، استخدم emulators:start بدلاً من ذلك)
firebase serve --only hosting: TARGET_NAME
يقدم محتوى الاستضافة وتكوين موقع الاستضافة المحدد على عنوان URL مستضاف محليًا