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

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

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

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

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

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

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

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

  • استخدام سير العمل في صفحة الاستضافة والخدمات بلا خادم > الاستضافة في Firebase Console

  • استخدام أمر CLI: firebase hosting:sites:create SITE_IDFirebase

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

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

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

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

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

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

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

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

  • استخدام سير العمل في صفحة الاستضافة والخدمات بلا خادم > الاستضافة في Firebase Console

  • استخدام أمر CLI: ‏ firebase hosting:sites:delete SITE_IDFirebase

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

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

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

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

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

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 الذي تم تطبيقه على الموقع الإلكتروني عند تحديد إعدادات الاستضافة في ملف 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 على 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 مستضاف محليًا