MODULE.bazel फ़ाइलें

MODULE.bazel फ़ाइलों में उपलब्ध तरीके.

सदस्य

archive_override

None archive_override(*, module_name, **kwargs)

इससे यह पता चलता है कि यह डिपेंडेंसी, रजिस्ट्री से नहीं, बल्कि किसी खास जगह पर मौजूद आर्काइव फ़ाइल (zip, gzip वगैरह) से आनी चाहिए. असल में, यह डिपेंडेंसी http_archive नियम के हिसाब से काम करेगी.

यह डायरेक्टिव सिर्फ़ रूट मॉड्यूल में लागू होता है. दूसरे शब्दों में कहें, तो अगर किसी मॉड्यूल का इस्तेमाल अन्य मॉड्यूल डिपेंडेंसी के तौर पर करते हैं, तो उसके अपने ओवरराइड को अनदेखा कर दिया जाता है.

पैरामीटर

पैरामीटर ब्यौरा
module_name string; ज़रूरी है
Bazel मॉड्यूल की उस डिपेंडेंसी का नाम जिस पर इस ओवरराइड को लागू करना है.
kwargs ज़रूरी है
अन्य सभी आर्ग्युमेंट, http_archive repo rule को फ़ॉरवर्ड किए जाते हैं. ध्यान दें कि name एट्रिब्यूट के बारे में नहीं बताया जाना चाहिए. इसके बजाय, module_name का इस्तेमाल करें.

bazel_dep

None bazel_dep(*, name, version='', max_compatibility_level=-1, repo_name='', dev_dependency=False)

यह Bazel के किसी दूसरे मॉड्यूल पर सीधी निर्भरता का एलान करता है.

पैरामीटर

पैरामीटर ब्यौरा
name string; ज़रूरी है
उस मॉड्यूल का नाम जिसे डायरेक्ट डिपेंडेंसी के तौर पर जोड़ा जाना है.
version string; डिफ़ॉल्ट रूप से ''
होता है मॉड्यूल का वह वर्शन जिसे सीधे तौर पर डिपेंडेंसी के तौर पर जोड़ा जाना है.
max_compatibility_level int; डिफ़ॉल्ट रूप से -1
होता है मॉड्यूल को सीधे तौर पर डिपेंडेंसी के तौर पर जोड़ने के लिए, ज़्यादा से ज़्यादा compatibility_level का इस्तेमाल किया जा सकता है. मॉड्यूल के वर्शन से, कम से कम compatibility_level का पता चलता है. अगर इस एट्रिब्यूट की वैल्यू नहीं दी गई है, तो ज़्यादा से ज़्यादा compatibility_level का भी पता चलता है.
repo_name string या None; डिफ़ॉल्ट रूप से ''
होता है यह बाहरी रेपो का नाम होता है, जो इस डिपेंडेंसी को दिखाता है. यह डिफ़ॉल्ट रूप से मॉड्यूल का नाम होता है. इस डिपेंडेंसी को "nodep" डिपेंडेंसी बनाने के लिए, इसे None पर सेट किया जा सकता है: इस मामले में, इस bazel_dep स्पेसिफ़िकेशन का पालन सिर्फ़ तब किया जाता है, जब टारगेट मॉड्यूल पहले से ही किसी अन्य तरीके से डिपेंडेंसी ग्राफ़ में मौजूद हो.
dev_dependency bool; डिफ़ॉल्ट रूप से False
होता है अगर यह सही पर सेट है, तो इस डिपेंडेंसी को अनदेखा कर दिया जाएगा. ऐसा तब होगा, जब मौजूदा मॉड्यूल रूट मॉड्यूल न हो या --ignore_dev_dependency चालू हो.

flag_alias

None flag_alias(*, name, starlark_flag)

यह कमांड-लाइन फ़्लैग --foo को Starlark फ़्लैग --@repo//defs:foo पर मैप करता है. Bazel, $ bazel build //target --foo के सभी इंस्टेंस को $ bazel build //target --@repo//defs:foo में बदल देता है.

पैरामीटर

पैरामीटर ब्यौरा
name string; ज़रूरी है
फ़्लैग का नाम.
starlark_flag string; ज़रूरी है
यह Starlark फ़्लैग का लेबल है, जिसे एलियास करना है.

git_override

None git_override(*, module_name, **kwargs)

इससे यह तय होता है कि यह डिपेंडेंसी, रजिस्ट्री से नहीं, बल्कि Git रिपॉज़िटरी में किसी खास कमिट से आनी चाहिए. असल में, यह डिपेंडेंसी git_repository नियम के साथ काम करेगी.

यह डायरेक्टिव सिर्फ़ रूट मॉड्यूल में लागू होता है. दूसरे शब्दों में कहें, तो अगर किसी मॉड्यूल का इस्तेमाल अन्य मॉड्यूल डिपेंडेंसी के तौर पर करते हैं, तो उसके अपने ओवरराइड को अनदेखा कर दिया जाता है.

पैरामीटर

पैरामीटर ब्यौरा
module_name string; ज़रूरी है
Bazel मॉड्यूल की उस डिपेंडेंसी का नाम जिस पर इस ओवरराइड को लागू करना है.
kwargs ज़रूरी है
अन्य सभी आर्ग्युमेंट, git_repository repo नियम को फ़ॉरवर्ड किए जाते हैं. ध्यान दें कि name एट्रिब्यूट के बारे में नहीं बताया जाना चाहिए. इसके बजाय, module_name का इस्तेमाल करें.

शामिल होते हैं

None include(label)

इसमें MODULE.bazel जैसी किसी दूसरी फ़ाइल का कॉन्टेंट शामिल होता है. असल में, include() इस तरह काम करता है जैसे शामिल की गई फ़ाइल को include() कॉल की जगह पर टेक्स्ट के तौर पर रखा गया हो. हालांकि, वैरिएबल बाइंडिंग (जैसे कि use_extension के लिए इस्तेमाल की जाने वाली बाइंडिंग) सिर्फ़ उस फ़ाइल में दिखती हैं जिसमें वे मौजूद होती हैं. वे शामिल की गई या शामिल करने वाली किसी भी फ़ाइल में नहीं दिखतीं.

सिर्फ़ रूट मॉड्यूल और ऐसे मॉड्यूल include() का इस्तेमाल कर सकते हैं जिन पर रजिस्ट्री के अलावा किसी और तरीके से पाबंदी लगाई गई है.

सिर्फ़ मौजूदा मॉड्यूल के रेपो में मौजूद फ़ाइलें शामिल की जा सकती हैं.

include() की मदद से, किसी मॉड्यूल फ़ाइल को कई हिस्सों में बांटा जा सकता है. इससे, बहुत बड़ी MODULE.bazel फ़ाइल बनाने से बचा जा सकता है. साथ ही, अलग-अलग सिमैंटिक सेगमेंट के लिए ऐक्सेस कंट्रोल को बेहतर तरीके से मैनेज किया जा सकता है.

पैरामीटर

पैरामीटर ब्यौरा
label string; required
The label pointing to the file to include. लेबल, मुख्य रेपो में मौजूद किसी फ़ाइल की ओर ले जाना चाहिए. दूसरे शब्दों में कहें, तो यह डबल स्लैश (//) से शुरू होना चाहिए. फ़ाइल का नाम .MODULE.bazel से खत्म होना चाहिए और . से शुरू नहीं होना चाहिए.

inject_repo

None inject_repo(extension_proxy, *args, **kwargs)

यह फ़ंक्शन, दिए गए मॉड्यूल एक्सटेंशन में एक या उससे ज़्यादा नई रिपॉज़िटरी जोड़ता है. अगर मौजूदा मॉड्यूल रूट मॉड्यूल नहीं है या --ignore_dev_dependency चालू है, तो इसे अनदेखा कर दिया जाता है.

किसी मौजूदा रेपो को बदलने के लिए, override_repo का इस्तेमाल करें.

पैरामीटर

पैरामीटर ब्यौरा
extension_proxy module_extension_proxy; ज़रूरी है
यह use_extension कॉल से मिला मॉड्यूल एक्सटेंशन प्रॉक्सी ऑब्जेक्ट है.
args ज़रूरी है
इस मॉड्यूल को दिखने वाले ऐसे रीपो जिन्हें उसी नाम से एक्सटेंशन में इंजेक्ट किया जाना चाहिए.
kwargs ज़रूरी है
एक्सटेंशन में इंजेक्ट किए जाने वाले नए रिपॉज़िटरी, जहां वैल्यू, मौजूदा मॉड्यूल के स्कोप में मौजूद रिपॉज़िटरी के नाम हैं. साथ ही, कुंजियां वे नाम हैं जिनके तहत वे एक्सटेंशन में दिखेंगी.

ऐसे आइडेंटिफ़ायर जो मान्य नहीं हैं उन्हें लिटरल dict के ज़रिए तय किया जा सकता है.इसे अतिरिक्त कीवर्ड आर्ग्युमेंट के तौर पर पास किया जाता है. उदाहरण के लिए, inject_repo(extension_proxy, **{"foo.2": "foo"}).

local_path_override

None local_path_override(*, module_name, path)

इससे पता चलता है कि यह डिपेंडेंसी, रजिस्ट्री से नहीं बल्कि लोकल डिस्क पर मौजूद किसी डायरेक्ट्री से आनी चाहिए. असल में, यह डिपेंडेंसी local_repository नियम के साथ काम करेगी.

यह डायरेक्टिव सिर्फ़ रूट मॉड्यूल में लागू होता है. दूसरे शब्दों में कहें, तो अगर किसी मॉड्यूल का इस्तेमाल अन्य मॉड्यूल डिपेंडेंसी के तौर पर करते हैं, तो उसके अपने ओवरराइड को अनदेखा कर दिया जाता है.

पैरामीटर

पैरामीटर ब्यौरा
module_name string; ज़रूरी है
Bazel मॉड्यूल की उस डिपेंडेंसी का नाम जिस पर इस ओवरराइड को लागू करना है.
path string; ज़रूरी है
यह उस डायरेक्ट्री का पाथ है जिसमें यह मॉड्यूल मौजूद है.

मॉड्यूल

None module(*, name='', version='', compatibility_level=0, repo_name='', bazel_compatibility=[])

यह Bazel मॉड्यूल की कुछ प्रॉपर्टी के बारे में बताता है. इस मॉड्यूल को मौजूदा Bazel रेपो से दिखाया जाता है. ये प्रॉपर्टी, मॉड्यूल का ज़रूरी मेटाडेटा होती हैं. जैसे, नाम और वर्शन. इसके अलावा, ये मौजूदा मॉड्यूल और उस पर निर्भर रहने वाले मॉड्यूल के व्यवहार पर भी असर डालती हैं.

इसका इस्तेमाल ज़्यादा से ज़्यादा एक बार किया जाना चाहिए. अगर इसका इस्तेमाल किया जाता है, तो यह MODULE.bazel फ़ाइल में पहला डायरेक्टिव होना चाहिए. इसे सिर्फ़ तब हटाया जा सकता है, जब यह मॉड्यूल रूट मॉड्यूल हो. इसका मतलब है कि अगर यह किसी दूसरे मॉड्यूल पर निर्भर नहीं है.

पैरामीटर

पैरामीटर ब्यौरा
name string; डिफ़ॉल्ट रूप से ''
होता है मॉड्यूल का नाम. इसे सिर्फ़ तब हटाया जा सकता है, जब यह मॉड्यूल रूट मॉड्यूल हो. इसका मतलब है कि अगर यह किसी दूसरे मॉड्यूल पर निर्भर नहीं है. मॉड्यूल का मान्य नाम ऐसा होना चाहिए: 1) इसमें सिर्फ़ अंग्रेज़ी के छोटे अक्षर (a-z), अंक (0-9), बिंदु (.), हाइफ़न (-), और अंडरस्कोर (_) शामिल हों; 2) इसकी शुरुआत अंग्रेज़ी के छोटे अक्षर से हो; 3) इसका आखिरी वर्ण अंग्रेज़ी का छोटा अक्षर या अंक हो.
version string; डिफ़ॉल्ट तौर पर ''
होता है मॉड्यूल का वर्शन. इसे सिर्फ़ तब हटाया जा सकता है, जब यह मॉड्यूल रूट मॉड्यूल हो. इसका मतलब है कि अगर यह किसी दूसरे मॉड्यूल पर निर्भर नहीं है. वर्शन, SemVer फ़ॉर्मैट में होना चाहिए. ज़्यादा जानकारी के लिए, दस्तावेज़ देखें.
compatibility_level int; डिफ़ॉल्ट तौर पर 0
होता है यह मॉड्यूल का कंपैटबिलिटी लेवल होता है. जब भी कोई ऐसा बड़ा बदलाव किया जाता है जो कंपैटिबल नहीं होता है, तब इसे बदला जाना चाहिए. यह SemVer के हिसाब से मॉड्यूल का "मेजर वर्शन" है. हालांकि, यह वर्शन स्ट्रिंग में एम्बेड नहीं किया गया है, बल्कि एक अलग फ़ील्ड के तौर पर मौजूद है. अलग-अलग वर्शन के साथ काम करने वाले मॉड्यूल, वर्शन रिज़ॉल्यूशन में इस तरह हिस्सा लेते हैं जैसे वे अलग-अलग नाम वाले मॉड्यूल हों. हालांकि, फ़ाइनल डिपेंडेंसी ग्राफ़ में एक ही नाम वाले ऐसे कई मॉड्यूल नहीं हो सकते जो अलग-अलग वर्शन के साथ काम करते हों. ऐसा तब तक नहीं हो सकता, जब तक multiple_version_override लागू न हो. ज़्यादा जानकारी के लिए, दस्तावेज़ देखें.
repo_name string; डिफ़ॉल्ट रूप से ''
होता है इस मॉड्यूल को दिखाने वाली रिपॉज़िटरी का नाम, जैसा कि मॉड्यूल में दिखता है. डिफ़ॉल्ट रूप से, रेपो का नाम मॉड्यूल का नाम होता है. इसे उन प्रोजेक्ट के लिए तय किया जा सकता है जो अपने लिए ऐसे रेपो के नाम का इस्तेमाल कर रहे हैं जो उसके मॉड्यूल के नाम से अलग है. इससे माइग्रेशन की प्रोसेस आसान हो जाती है.
bazel_compatibility strings का इटरेबल; डिफ़ॉल्ट रूप से []
होता है यह Bazel के उन वर्शन की सूची है जिनसे उपयोगकर्ताओं को यह तय करने में मदद मिलती है कि इस मॉड्यूल के साथ Bazel के कौनसे वर्शन काम करते हैं. इससे डिपेंडेंसी रिज़ॉल्यूशन पर कोई असर नहीं पड़ता. हालांकि, bzlmod इस जानकारी का इस्तेमाल यह देखने के लिए करेगा कि आपका मौजूदा Bazel वर्शन काम करता है या नहीं. इस वैल्यू का फ़ॉर्मैट, कॉमा लगाकर अलग की गई कुछ शर्तों की वैल्यू की स्ट्रिंग होता है. तीन तरह की पाबंदियां लगाई जा सकती हैं: <=X.X.X: Bazel का वर्शन X.X.X के बराबर या इससे पुराना होना चाहिए. इसका इस्तेमाल तब किया जाता है, जब नए वर्शन में कोई ऐसा बदलाव किया गया हो जो काम नहीं करता. >=X.X.X: Bazel का वर्शन X.X.X या इसके बाद का होना चाहिए.इसका इस्तेमाल तब किया जाता है, जब आपको कुछ ऐसी सुविधाओं की ज़रूरत होती है जो सिर्फ़ X.X.X के बाद से उपलब्ध हैं. -X.X.X: Bazel का X.X.X वर्शन काम नहीं करता. इस कुकी का इस्तेमाल तब किया जाता है, जब X.X.X वर्शन में कोई गड़बड़ी हो और वह काम न कर रही हो. हालांकि, बाद के वर्शन में इस गड़बड़ी को ठीक कर दिया गया हो.

multiple_version_override

None multiple_version_override(*, module_name, versions, registry='')

इससे यह तय होता है कि डिपेंडेंसी अब भी किसी रजिस्ट्री से आनी चाहिए, लेकिन इसके कई वर्शन एक साथ मौजूद होने चाहिए. ज़्यादा जानकारी के लिए, दस्तावेज़ देखें. यह डायरेक्टिव सिर्फ़ रूट मॉड्यूल में लागू होता है. दूसरे शब्दों में कहें, तो अगर किसी मॉड्यूल का इस्तेमाल अन्य मॉड्यूल डिपेंडेंसी के तौर पर करते हैं, तो उसके अपने ओवरराइड को अनदेखा कर दिया जाता है.

पैरामीटर

पैरामीटर ब्यौरा
module_name string; ज़रूरी है
Bazel मॉड्यूल की उस डिपेंडेंसी का नाम जिस पर इस ओवरराइड को लागू करना है.
versions string का इटरेबल; ज़रूरी है
यह साफ़ तौर पर बताता है कि कौनसे वर्शन एक साथ मौजूद हो सकते हैं. ये वर्शन, डिपेंडेंसी ग्राफ़ में पहले से मौजूद होने चाहिए. इस मॉड्यूल पर निर्भरता रखने वाले मॉड्यूल को, उसी कंपैटिबिलिटी लेवल पर, अनुमति वाले सबसे नए वर्शन में "अपग्रेड" कर दिया जाएगा. वहीं, जिन मॉड्यूल का वर्शन, उसी कंपैटिबिलिटी लेवल पर अनुमति वाले किसी भी वर्शन से नया है उनमें गड़बड़ी होगी.
registry string; डिफ़ॉल्ट रूप से ''
होता है यह मॉड्यूल के लिए रजिस्ट्री को बदलता है. रजिस्ट्री की डिफ़ॉल्ट सूची से इस मॉड्यूल को ढूंढने के बजाय, दी गई रजिस्ट्री का इस्तेमाल किया जाना चाहिए.

override_repo

None override_repo(extension_proxy, *args, **kwargs)

यह फ़ंक्शन, दिए गए मॉड्यूल एक्सटेंशन से तय की गई एक या उससे ज़्यादा रिपॉज़िटरी को, मौजूदा मॉड्यूल को दिखने वाली दी गई रिपॉज़िटरी से बदलता है. अगर मौजूदा मॉड्यूल, रूट मॉड्यूल नहीं है या `--ignore_dev_dependency` चालू है, तो इसे अनदेखा कर दिया जाता है.

नई रेपो जोड़ने के लिए, inject_repo का इस्तेमाल करें.

पैरामीटर

पैरामीटर ब्यौरा
extension_proxy module_extension_proxy; ज़रूरी है
यह use_extension कॉल से मिला मॉड्यूल एक्सटेंशन प्रॉक्सी ऑब्जेक्ट है.
args ज़रूरी है
एक्सटेंशन में मौजूद वे रिपो जिन्हें मौजूदा मॉड्यूल में मौजूद, उसी नाम के रिपो से बदला जाना चाहिए.
kwargs ज़रूरी है
एक्सटेंशन से जनरेट किए गए रेपो पर लागू किए जाने वाले ओवरराइड. यहां वैल्यू, मौजूदा मॉड्यूल के स्कोप में मौजूद रेपो के नाम हैं. साथ ही, कुंजियां उन रेपो के नाम हैं जिन्हें एक्सटेंशन में ओवरराइड किया जाएगा.

ऐसे आइडेंटिफ़ायर जो मान्य नहीं हैं उन्हें लिटरल dict के ज़रिए तय किया जा सकता है.इसे अतिरिक्त कीवर्ड आर्ग्युमेंट के तौर पर पास किया जाता है. उदाहरण के लिए, override_repo(extension_proxy, **{"foo.2": "foo"}).

register_execution_platforms

None register_execution_platforms(*platform_labels, dev_dependency=False)

इस मॉड्यूल को चुनने पर, पहले से तय किए गए उन प्लैटफ़ॉर्म के बारे में बताता है जिन्हें रजिस्टर करना है. यह ऐब्सलूट टारगेट पैटर्न होना चाहिए. जैसे, @ या // से शुरू होना चाहिए. ज़्यादा जानकारी के लिए, टूलचेन रिज़ॉल्यूशन देखें. :all जैसे एक से ज़्यादा टारगेट तक पहुंचने वाले पैटर्न, नाम के हिसाब से लेक्सिकोग्राफ़िकल क्रम में रजिस्टर किए जाएंगे.

पैरामीटर

पैरामीटर ब्यौरा
dev_dependency bool; डिफ़ॉल्ट तौर पर False
है अगर यह सही है, तो मौजूदा मॉड्यूल के रूट मॉड्यूल न होने पर या `--ignore_dev_dependency` चालू होने पर, एक्ज़ीक्यूशन प्लैटफ़ॉर्म रजिस्टर नहीं किए जाएंगे.
platform_labels स्ट्रिंग का क्रम; ज़रूरी है
रजिस्टर करने के लिए टारगेट पैटर्न.

register_toolchains

None register_toolchains(*toolchain_labels, dev_dependency=False)

इस मॉड्यूल को चुनने पर, पहले से तय की गई टूलचेन को रजिस्टर करने के लिए यह विकल्प इस्तेमाल किया जाता है. यह ऐब्सलूट टारगेट पैटर्न होना चाहिए. जैसे, @ या // से शुरू होना चाहिए. ज़्यादा जानकारी के लिए, टूलचेन रिज़ॉल्यूशन देखें. :all जैसे कई टारगेट तक पहुंचने वाले पैटर्न, टारगेट के नाम के हिसाब से लेक्सिकोग्राफ़िकल क्रम में रजिस्टर किए जाएंगे. टूलचेन लागू करने के नाम के हिसाब से नहीं.

पैरामीटर

पैरामीटर ब्यौरा
dev_dependency bool; डिफ़ॉल्ट तौर पर False
है अगर यह सही पर सेट है, तो टूलचेन रजिस्टर नहीं किए जाएंगे. ऐसा तब होगा, जब मौजूदा मॉड्यूल रूट मॉड्यूल न हो या `--ignore_dev_dependency` चालू हो.
toolchain_labels स्ट्रिंग का क्रम; ज़रूरी है
रजिस्टर करने के लिए टारगेट पैटर्न.

single_version_override

None single_version_override(*, module_name, version='', registry='', patches=[], patch_cmds=[], patch_strip=0)

इससे पता चलता है कि किसी डिपेंडेंसी को अब भी रजिस्ट्री से लिया जाना चाहिए, लेकिन उसके वर्शन को पिन किया जाना चाहिए या उसकी रजिस्ट्री को बदला जाना चाहिए या पैच की सूची लागू की जानी चाहिए. यह डायरेक्टिव सिर्फ़ रूट मॉड्यूल में लागू होता है. दूसरे शब्दों में कहें, तो अगर किसी मॉड्यूल का इस्तेमाल अन्य मॉड्यूल डिपेंडेंसी के तौर पर करते हैं, तो उसके अपने ओवरराइड को अनदेखा कर दिया जाता है.

पैरामीटर

पैरामीटर ब्यौरा
module_name string; ज़रूरी है
Bazel मॉड्यूल की उस डिपेंडेंसी का नाम जिस पर इस ओवरराइड को लागू करना है.
version string; डिफ़ॉल्ट रूप से ''
होता है यह डिपेंडेंसी ग्राफ़ में इस मॉड्यूल के बताए गए वर्शन को बदलता है. दूसरे शब्दों में कहें, तो यह मॉड्यूल इस ओवरराइड वर्शन पर "पिन" हो जाएगा. अगर सिर्फ़ रजिस्ट्री या पैच को बदलना है, तो इस एट्रिब्यूट को शामिल करने की ज़रूरत नहीं है.
registry string; डिफ़ॉल्ट रूप से ''
होता है यह मॉड्यूल के लिए रजिस्ट्री को बदलता है. रजिस्ट्री की डिफ़ॉल्ट सूची से इस मॉड्यूल को ढूंढने के बजाय, दी गई रजिस्ट्री का इस्तेमाल किया जाना चाहिए.
patches string का इटरेटबल; डिफ़ॉल्ट रूप से []
होता है यह उन लेबल की सूची होती है जो इस मॉड्यूल के लिए लागू किए जाने वाले पैच फ़ाइलों की ओर इशारा करते हैं. पैच फ़ाइलें, टॉप लेवल प्रोजेक्ट के सोर्स ट्री में मौजूद होनी चाहिए. ये सूची में दिए गए क्रम के हिसाब से लागू होते हैं.

अगर किसी पैच से MODULE.bazel फ़ाइल में बदलाव होता है, तो ये बदलाव सिर्फ़ तब लागू होंगे, जब पैच फ़ाइल रूट मॉड्यूल से मिली हो.

patch_cmds strings का इटरेबल; डिफ़ॉल्ट रूप से []
होता है पैच लागू होने के बाद, Linux/Macos पर लागू की जाने वाली बैश कमांड का क्रम.

MODULE.bazel फ़ाइल में किए गए बदलाव लागू नहीं होंगे.

patch_strip int; डिफ़ॉल्ट तौर पर 0
होता है यह Unix patch के --strip आर्ग्युमेंट की तरह ही होता है.

use_extension

module_extension_proxy use_extension(extension_bzl_file, extension_name, *, dev_dependency=False, isolate=False)

यह फ़ंक्शन, मॉड्यूल एक्सटेंशन को दिखाने वाला प्रॉक्सी ऑब्जेक्ट दिखाता है. इसके तरीकों को मॉड्यूल एक्सटेंशन टैग बनाने के लिए इस्तेमाल किया जा सकता है.

पैरामीटर

पैरामीटर ब्यौरा
extension_bzl_file string; ज़रूरी है
यह मॉड्यूल एक्सटेंशन को तय करने वाली Starlark फ़ाइल का लेबल है.
extension_name string; ज़रूरी है
इस्तेमाल किए जाने वाले मॉड्यूल एक्सटेंशन का नाम. इस नाम वाले सिंबल को Starlark फ़ाइल से एक्सपोर्ट किया जाना चाहिए.
dev_dependency bool; डिफ़ॉल्ट रूप से False
होता है अगर यह सही पर सेट है, तो मॉड्यूल एक्सटेंशन के इस इस्तेमाल को अनदेखा कर दिया जाएगा. ऐसा तब होगा, जब मौजूदा मॉड्यूल रूट मॉड्यूल न हो या `--ignore_dev_dependency` चालू हो.
isolate bool; डिफ़ॉल्ट रूप से False
होता है एक्सपेरिमेंट के तौर पर उपलब्ध है. यह पैरामीटर एक्सपेरिमेंट के तौर पर उपलब्ध है. इसमें कभी भी बदलाव किया जा सकता है. कृपया इसके भरोसे न रहें. इसे एक्सपेरिमेंट के तौर पर चालू किया जा सकता है. इसके लिए, --experimental_isolated_extension_usages
को सेट करना होगा. अगर यह सही है, तो मॉड्यूल एक्सटेंशन का यह इस्तेमाल, इस और अन्य मॉड्यूल में मौजूद अन्य सभी इस्तेमाल से अलग रहेगा. इस इस्तेमाल के लिए बनाए गए टैग, अन्य इस्तेमाल पर असर नहीं डालते. साथ ही, इस इस्तेमाल के लिए एक्सटेंशन से जनरेट की गई रिपॉज़िटरी, एक्सटेंशन से जनरेट की गई अन्य सभी रिपॉज़िटरी से अलग होगी.

फ़िलहाल, यह पैरामीटर एक्सपेरिमेंट के तौर पर उपलब्ध है. साथ ही, यह सिर्फ़ --experimental_isolated_extension_usages फ़्लैग के साथ उपलब्ध है.

use_repo

None use_repo(extension_proxy, *args, **kwargs)

यह फ़ंक्शन, दिए गए मॉड्यूल एक्सटेंशन से जनरेट किए गए एक या उससे ज़्यादा रेपो को मौजूदा मॉड्यूल के स्कोप में इंपोर्ट करता है.

पैरामीटर

पैरामीटर ब्यौरा
extension_proxy module_extension_proxy; ज़रूरी है
यह use_extension कॉल से मिला मॉड्यूल एक्सटेंशन प्रॉक्सी ऑब्जेक्ट है.
args ज़रूरी है
इंपोर्ट किए जाने वाले रिपॉज़िटरी के नाम.
kwargs ज़रूरी है
इस विकल्प का इस्तेमाल करके, कुछ रिपॉज़िटरी को मौजूदा मॉड्यूल के स्कोप में अलग-अलग नामों से इंपोर्ट किया जा सकता है. कुंजियां, मौजूदा स्कोप में इस्तेमाल किया जाने वाला नाम होना चाहिए. वहीं, वैल्यू, मॉड्यूल एक्सटेंशन से एक्सपोर्ट किए गए ओरिजनल नाम होने चाहिए.

ऐसे आइडेंटिफ़ायर जो मान्य नहीं हैं उन्हें लिटरल dict के ज़रिए तय किया जा सकता है.इसे अतिरिक्त कीवर्ड आर्ग्युमेंट के तौर पर पास किया जाता है. उदाहरण के लिए, use_repo(extension_proxy, **{"foo.2": "foo"}).

use_repo_rule

repo_rule_proxy use_repo_rule(repo_rule_bzl_file, repo_rule_name)

यह फ़ंक्शन, एक प्रॉक्सी वैल्यू दिखाता है. इसे MODULE.bazel फ़ाइल में, एक या उससे ज़्यादा बार सीधे तौर पर रिपॉज़िटरी के नियम के तौर पर लागू किया जा सकता है. इस तरह से बनाए गए रेपो, सिर्फ़ मौजूदा मॉड्यूल को दिखते हैं. इन्हें प्रॉक्सी पर name एट्रिब्यूट का इस्तेमाल करके तय किए गए नाम से दिखाया जाता है. प्रॉक्सी पर, इंप्लिसिट बूलियन dev_dependency एट्रिब्यूट का इस्तेमाल यह दिखाने के लिए भी किया जा सकता है कि किसी खास रेपो को सिर्फ़ तब बनाया जाना चाहिए, जब मौजूदा मॉड्यूल रूट मॉड्यूल हो.

पैरामीटर

पैरामीटर ब्यौरा
repo_rule_bzl_file string; ज़रूरी है
यह Starlark फ़ाइल का लेबल है. यह फ़ाइल, रिपॉज़िटरी के नियम को तय करती है.
repo_rule_name string; ज़रूरी है
इस्तेमाल किए जाने वाले रेपो नियम का नाम. इस नाम वाले सिंबल को Starlark फ़ाइल से एक्सपोर्ट किया जाना चाहिए.