了解 2023 年 Google I/O 大会上介绍的 Firebase 亮点。了解详情

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

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