يمكنك إعداد موقع إلكتروني واحد أو أكثر من Firebase Hosting في مشروع واحد على Firebase. بما أنّ جميع المواقع الإلكترونية تندرج ضمن مشروع Firebase نفسه، يمكن لجميع المواقع الإلكترونية الوصول إلى موارد Firebase الأخرى الخاصة بالمشروع.
- يحتوي كل موقع إلكتروني على إعدادات استضافة خاصة به.
- يستضيف كل موقع إلكتروني مجموعته الخاصة من المحتوى.
- يمكن أن يتضمّن كل موقع إلكتروني نطاقًا واحدًا أو أكثر مرتبطًا به.
من خلال إعداد مواقع إلكترونية متعدّدة Hosting ضمن مشروع Firebase نفسه، يمكنك مشاركة موارد Firebase بسهولة أكبر بين المواقع الإلكترونية والتطبيقات ذات الصلة. على سبيل المثال، إذا أعددت مدونتك ولوحة المشرفين والتطبيق العام كمواقع إلكترونية فردية في مشروع Firebase نفسه، يمكن أن تشترك جميعها في Firebase Authentication قاعدة بيانات المستخدمين نفسها، مع امتلاكها أيضًا نطاقات أو محتوى فريدًا خاصًا بها.
الخطوة 1: تعديل إصدار واجهة سطر الأوامر (CLI) Firebase
يمكنك الوصول إلى أحدث ميزات Firebase Hosting من خلال تثبيت آخر إصدار من واجهة سطر الأوامر Firebase.
الخطوة 2: إضافة مواقع إلكترونية أخرى
أضِف مواقع إلكترونية إضافية إلى مشروع Firebase باستخدام إحدى الطرق التالية:
استخدِم سير العمل في صفحة Hosting في وحدة تحكّم Firebase
استخدِم أمر Firebase CLI:
firebase hosting:sites:create SITE_ID
استخدِم واجهة برمجة تطبيقات REST الخاصة بـ Hosting:
projects.sites.create
في كل طريقة من هذه الطرق، عليك تحديد SITE_ID
الذي يُستخدَم لإنشاء النطاقات الفرعية التلقائية التي توفّرها Firebase للموقع الإلكتروني:
SITE_ID.web.app
SITE_ID.firebaseapp.com
بما أنّ SITE_ID
يُستخدَم لعناوين URL هذه، يجب أن يستوفي رقم تعريف الموقع الإلكتروني المتطلبات التالية:
- يجب أن يكون تصنيف اسم مضيف صالحًا، ما يعني أنّه لا يمكن أن يحتوي على
.
أو_
أو غير ذلك. - يجب ألا يزيد عدد الأحرف عن 30 حرفًا.
- يجب أن يكون المعرّف فريدًا على مستوى العالم في Firebase
يمكنك أيضًا إضافة نطاقات مخصّصة إلى كل موقع إلكتروني لعرض المحتوى والإعدادات نفسها على عناوين URL متعددة.
حذف موقع إلكتروني ثانوي
احذف المواقع الإلكترونية غير المرغوب فيها من مشروع Firebase باستخدام إحدى الطريقتَين التاليتَين:
استخدِم سير العمل في صفحة Hosting في وحدة تحكّم Firebase
استخدِم أمر Firebase CLI:
firebase hosting:sites:delete SITE_ID
استخدِم واجهة برمجة تطبيقات REST الخاصة بـ Hosting:
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
تم تطبيقه على موقع إلكتروني عند تحديد إعدادات الاستضافة في ملف 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 \ |
ينشر محتوى Hosting وإعدادات الموقع الإلكتروني التلقائي Hosting على عنوان URL للمعاينة |
firebase hosting:channel:deploy \ |
تنشر هذه الطريقة محتوى 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 الموقع الإلكتروني المحدّد وإعداداته على عنوان URL مستضاف محليًا.Hosting |