نشر الأهداف

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

يكون نشر الاستهدافات مفيدًا عندما يكون لديك عدّة مواقع استضافة أو عدة حِزم Cloud Storage أو عدة مثيلات لقاعدة بيانات في الوقت الفعلي. باستخدام أهداف النشر، يمكن لواجهة سطر الأوامر في Firebase نشر الإعدادات لمورد محدد من Firebase أو مجموعة من الموارد في مشروعك، مثل:

  • إعدادات الاستضافة لكل موقع من المواقع الإلكترونية المضيفة
  • أصول ثابتة من دليل مشروعك لكل موقع من مواقع الاستضافة
  • قواعد الأمان التي تشاركها عدة مثيلات قاعدة بيانات في الوقت الفعلي أو حزم بيانات متعددة في Cloud Storage

لإعداد هدف نشر:

  1. طبِّق TARGET_NAME على مورد Firebase أو مجموعة موارد Firebase المستهدفة.
  2. في ملف firebase.json، يمكنك الرجوع إلى TARGET_NAME المرتبط عند ضبط الإعدادات لكل مورد أو مجموعة من الموارد.

عند تشغيل أوامر واجهة سطر الأوامر في Firebase (مثل firebase deploy)، يقرن واجهة سطر الأوامر في Firebase كل TARGET_NAME بموارد Firebase المرتبطة به. يقوم واجهة سطر الأوامر بعد ذلك بمراسلة مشروع Firebase بالإعدادات لكل مورد.

إعداد أهداف النشر لموارد Firebase

باستخدام واجهة سطر الأوامر في Firebase، يمكنك تطبيق TARGET_NAME (معرّف الاسم المختصر الذي تعرّفه بنفسك) على أحد موارد Firebase أو مجموعة من موارد Firebase. وتتيح منصة Firebase نشر الأهداف لما يلي:

يتم تخزين إعدادات النشرات المستهدفة في ملف .firebaserc في دليل المشروع، لذا لا تحتاج سوى إلى إعداد أهداف النشر مرة واحدة لكل مشروع.

إعداد أهداف النشر للاستضافة

لإنشاء هدف نشر وتطبيق TARGET_NAME على موقع استضافة، شغِّل أمر واجهة سطر الأوامر التالي:

firebase target:apply TYPE TARGET_NAME RESOURCE_IDENTIFIER

أماكن ظهور المَعلمات:

  • TYPE - نوع مورد Firebase المناسب

    • بالنسبة إلى مواقع "استضافة Firebase"، استخدِم hosting.
  • 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

إعداد أهداف النشر في Cloud Storage أو Realtime Database

لإنشاء هدف نشر وتطبيق TARGET_NAME على مجموعة من موارد Cloud Storage أو Realtime Database، شغِّل أمر CLI التالي:

firebase target:apply TYPE TARGET_NAME RESOURCE-1_IDENTIFIER RESOURCE-2_IDENTIFIER ...

أماكن ظهور المَعلمات:

  • TYPE - نوع مورد Firebase المناسب

    • بالنسبة إلى حِزم Cloud Storage، استخدِم storage.
    • وبالنسبة إلى مثيلات قاعدة البيانات في الوقت الفعلي، استخدِم database.
  • TARGET_NAME - اسم فريد للمورد أو مجموعة الموارد التي تشترك في قواعد الأمان

  • RESOURCE_IDENTIFIER: معرّفات الموارد كما هو مُدرَجة في مشروعك على Firebase (مثل أسماء حِزم التخزين أو أرقام تعريف مثيل قاعدة البيانات) التي تتشارك جميعها قواعد الأمان نفسها

على سبيل المثال، يمكنك تطبيق TARGET_NAME من main على مجموعة مكوّنة من ثلاث حِزم Cloud Storage إقليمية تتشارك كلّها قواعد الأمان نفسها من خلال تنفيذ الأمر التالي:

firebase target:apply storage main myproject.appspot.com myproject-eu myproject-ja

يُرجى العِلم أنّ myproject.appspot.com هو معرّف الحزمة التلقائية، في حين أنّ myproject-eu وmyproject-ja هما حزمتان إضافيتان تم إنشاؤهما في مشروع Firebase.

ضبط ملف firebase.json لاستخدام الأهداف

بعد إعداد أهداف النشر لموارد Firebase، يُرجى الرجوع إلى كل TARGET_NAME مطبَّق في ملف إعداد firebase.json:

  1. أنشئ مصفوفة من عناصر الإعداد لكل مورد في Firebase باسم TYPE (hosting أو storage أو database).
  2. في المصفوفات، حدِّد target (باستخدام TARGET_NAME) واضبط إعداداتك لمورد Firebase المرتبط أو مجموعة موارد Firebase.

بالاستناد إلى الأمثلة المذكورة أعلاه، يتضمّن مشروعك على Firebase موقعَين للاستضافة وثلاث حِزم Cloud Storage (تتشارك قواعد الأمان نفسها)، سيظهر ملف 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
    }
  ]
}

{
  "storage": [ {
      "target": "main",  // "main" is the applied TARGET_NAME for the group of Cloud Storage buckets
      "rules": "storage.main.rules"  // the file that contains the shared security rules
    }
  ]
}

إذا كانت لديك إعدادات متعددة لمواردك، يمكنك إنشاء أهداف نشر متعددة وتحديد كل إعداد في ملف firebase.json. سيتم نشر جميع الموارد ذات الصلة معًا عند تشغيل firebase deploy.

إدارة أهداف النشر

يتم تخزين إعدادات نشر الأهداف في ملف .firebaserc في دليل المشروع. يمكنك إدارة أهداف النشر لمشروعك عن طريق تشغيل أي من الأوامر التالية من جذر دليل المشروع.

الطلب الوصف
firebase target يسرد أهداف النشر لدليل مشروعك الحالي
firebase target:remove \
TYPE RESOURCE_IDENTIFIER
إزالة مورد من الهدف الذي تم تعيينه إليه
firebase target:clear \
TYPE TARGET_NAME
إزالة جميع الموارد أو موقع الاستضافة من الهدف المحدّد

يعمل الأمران target:remove وtarget:clear على تعديل إعدادات استهداف النشر تلقائيًا في ملف .firebaserc في دليل مشروعك.

الاختبار محليًا قبل النشر

شغِّل أيًا من الأوامر التالية من جذر دليل المشروع.

الطلب الوصف
firebase emulators:start يحاكي جميع الموارد التي تم ضبطها في دليل مشروعك.
firebase emulators:start \
--only hosting:TARGET_NAME
محاكاة محتوى الاستضافة وإعدادات الموقع الإلكتروني المحدَّد للاستضافة فقط
firebase emulators:start \
--only storage:TARGET_NAME
يحاكي ملف القواعد فقط لهدف Cloud Storage المحدّد
firebase emulators:start \
--only database:TARGET_NAME
لمحاكاة ملف القواعد لهدف قاعدة بيانات الوقت الفعلي المحدد فقط

تعرّف على المزيد من المعلومات حول ضبط واستخدام مجموعة أدوات المحاكاة المحلية من Firebase.

تفعيل موارد Firebase محدّدة

شغِّل أيًا من الأوامر التالية من جذر دليل المشروع.

الطلب الوصف
firebase deploy تنشئ إصدارًا يتضمّن جميع الموارد القابلة للنشر في دليل مشروعك.
firebase deploy \
--only hosting:TARGET_NAME
نشر محتوى الاستضافة وضبط إعدادات موقع الاستضافة الإلكتروني المحدّد فقط على القناة المباشرة الخاصة بالموقع الإلكتروني
firebase hosting:channel:deploy CHANNEL_ID \
--only TARGET_NAME
نشر محتوى الاستضافة وإعدادات الموقع الإلكتروني المحدَّد للاستضافة فقط على قناة معاينة خاصة بالموقع الإلكتروني
firebase deploy \
--only storage:TARGET_NAME
نشر ملف القواعد فقط لهدف Cloud Storage المحدّد
firebase deploy \
--only database:TARGET_NAME
نشر ملف القواعد فقط لهدف قاعدة البيانات في الوقت الفعلي المحدد