مستوى العرض

تتناول هذه الصفحة نظامي Bazel&#39؛ وهما مستوى الظهور المستهدف ومستوى رؤية التحميل.

يساعد كلا نوعَي مستوى الرؤية مطوّري البرامج الآخرين في التمييز بين واجهة برمجة التطبيقات العلنية لمكتبتك وتقديم تفاصيل تنفيذها، فضلاً عن إمكانية المساعدة في فرض البنية مع نمو مساحة العمل. ويمكنك أيضًا استخدام إذن الوصول عند إيقاف واجهة برمجة تطبيقات علنية للسماح للمستخدمين الحاليين برفض المستخدمين الجدد.

مستوى الظهور المستهدف

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

يكون الاستهداف A مرئيًا للهدف B إذا كان في الحزمة نفسها، أو إذا منح A إذن الوصول إلى حزمة B'. وبالتالي، فإن الحزم هي وحدة الدقة لتحديد ما إذا كان سيتم السماح بالوصول أم لا. إذا كانت الخاصية B تعتمد على A، لكنّ A غير مرئية لـ B، ستتعذّر أي محاولة لإنشاء B أثناء التحليل.

يُرجى العِلم أنّ منح إذن الوصول إلى حزمة لا يؤدي وحده إلى منحها إذن الوصول إلى حِزمها الفرعية. للحصول على المزيد من التفاصيل حول الحزمة والحزم الفرعية، يُرجى الاطّلاع على المفاهيم والمصطلحات.

بالنسبة إلى النماذج الأولية، يمكنك إيقاف فرض حق الوصول المستهدف من خلال إعداد العلامة --check_visibility=false. يجب عدم تنفيذ هذا الإجراء لاستخدام الإنتاج في الرمز المرسَل.

إنّ الطريقة الأساسية للتحكّم في إذن الوصول هي باستخدام السمة visibility في أهداف القاعدة. يوضّح هذا القسم تنسيق هذه السمة، وكيفية تحديد مستوى رؤية الهدف.

مواصفات مستوى الرؤية

تتضمّن كل أهداف القاعدة سمة visibility تسجّل قائمة بالتصنيفات. ولكل تصنيف أحد النماذج التالية. باستثناء النموذج الأخير، تتمثل هذه في عناصر نائبة نصية فقط لا تتوافق مع أي استهداف فعلي.

  • "//visibility:public": يمنح حق الوصول إلى جميع الحِزم. (لا يمكن دمجها مع أي مواصفات أخرى.)

  • "//visibility:private": لا يمنح أي حق وصول إضافي. يمكن للأهداف في هذه الحزمة فقط استخدام هذا الهدف. (لا يمكن دمجها مع أي مواصفات أخرى).

  • "//foo/bar:__pkg__": يمنح حق الوصول إلى //foo/bar (ولكن ليس الحزم الفرعية).

  • "//foo/bar:__subpackages__": يمنح حق الوصول إلى //foo/bar وجميع حزمه الفرعية المباشرة وغير المباشرة.

  • "//some_pkg:my_package_group": يمنح إذن الوصول إلى كل الحِزم التي تشكّل جزءًا من package_group المحدّد.

    • تستخدم مجموعات الحزم بنية مختلفة لتحديد الحِزم. داخل مجموعة حزمات، يتم استبدال النموذجين "//foo/bar:__pkg__" و"//foo/bar:__subpackages__" على التوالي بـ "//foo/bar" و"//foo/bar/...". وبالمثل، "//visibility:public" و"//visibility:private" هما "public" و"private" فقط.

على سبيل المثال، إذا تم ضبط visibility على //some/package:mytarget، يمكن استخدامه من خلال أي هدف يشكّل جزءًا من شجرة المصدر //some/package/...، بالإضافة إلى الاستهدافات المحدّدة في //tests/BUILD، ولكن ليس حسب الأهداف المحدّدة في //tests/integration/BUILD.

أفضل الممارسات: لجعل عدة استهدافات مرئية لمجموعة الحزم نفسها، استخدِم package_group بدلاً من تكرار القائمة في كل سمة من سمات target's visibility. ويؤدي ذلك إلى زيادة سهولة القراءة ويمنع مزامنة القوائم.