MODULE.bazel 檔案

回報問題 Nightly · 8.0 7.4 . 7.3 · 7.2 · 7.1 · 7.0 · 6.5

在 MODULE.bazel 檔案中可用的函式。

成員

archive_override

None archive_override(module_name, **kwargs)

指定此依附元件應來自特定位置的封存檔案 (zip、gzip 等),而非來自登錄。實際上,這個依附元件會由 http_archive 規則支援。

這項指示僅會在根模組中生效;換句話說,如果模組用於其他依附元件,系統會忽略其本身的覆寫值。

參數

參數 說明
module_name string; 必要
要套用此覆寫值的 Bazel 模組依附元件名稱。
kwargs required
所有其他引數都會轉送至基礎 http_archive 存放區規則。請注意,請勿指定 name 屬性,改用 module_name

bazel_dep

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

宣告對其他 Bazel 模組的直接依附元件。

參數

參數 說明
name 字串; 必要
要新增為直接依附元件的模組名稱。
version 字串;預設值為 ''
。 要新增為直接依附元件的模組版本。
max_compatibility_level int;預設為 -1
。 如果要將模組新增為直接依附元件,則支援的最大 compatibility_level 為 模組的版本會暗示支援的最低相容性層級,以及未指定此屬性時的最高相容性層級。
repo_name 字串;預設為 ''
。代表此依附元件的外部存放區名稱。預設為模組名稱。
dev_dependency bool; 預設為 False
如果為 true,如果目前的模組不是根模組,或已啟用 `--ignore_dev_dependency`,系統就會忽略這個依附元件。

git_override

None git_override(module_name, **kwargs)

指定此依附元件應來自 Git 存放區中的特定修訂版本,而非來自登錄。實際上,這個依附元件會由 git_repository 規則支援。

這項指示僅會在根模組中生效;換句話說,如果模組用於其他依附元件,系統會忽略其本身的覆寫值。

參數

參數 說明
module_name string; 必要
要套用此覆寫值的 Bazel 模組依附元件名稱。
kwargs required
所有其他引數都會轉送至基礎 git_repository repo 規則。請注意,請勿指定 name 屬性,改用 module_name

包含

None include(label)

包含其他類似 MODULE.bazel 檔案的內容。實際上,include() 的行為就像是將包含的檔案以文字形式放在 include() 呼叫的位置,但變數繫結 (例如用於 use_extension 的繫結) 只會顯示在發生變數繫結的檔案中,不會顯示在任何包含或包含的檔案中。

只有根模組可以使用 include();如果 bazel_dep 的 MODULE 檔案使用 include(),則會發生錯誤。

只能納入主存放區中的檔案。

include() 可讓您將根模組檔案切割成多個部分,以免產生巨大的 MODULE.bazel 檔案,或更妥善地管理個別語意區段的存取控制。

參數

參數 說明
label string; required
指向要納入的檔案的標籤。標籤必須指向主存放區中的檔案,也就是說,必須以雙斜線 (//) 開頭。檔案名稱必須以 .MODULE.bazel 結尾,且不得以 . 開頭。

inject_repo

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

將一或多個新的存放區插入指定的模組擴充功能。如果目前的模組不是根模組,或已啟用 --ignore_dev_dependency,系統就會忽略此值。

請改用 override_repo 覆寫現有的 repo。

參數

參數 說明
extension_proxy module_extension_proxy; 必須提供
module_extension_proxy 是 use_extension 呼叫傳回的模組擴充功能 Proxy 物件。
args required
目前模組可見的 repos,應以相同名稱插入擴充功能。
kwargs required
要插入至擴充功能的新 repos,其中值為目前模組範圍內的 repos 名稱,而鍵則是這些名稱在擴充功能中顯示的名稱。

local_path_override

None local_path_override(module_name, path)

指定此依附元件應來自本機磁碟上的特定目錄,而非來自登錄。實際上,此依附元件會由 local_repository 規則支援。

這項指示僅會在根模組中生效;換句話說,如果模組用於其他依附元件,系統會忽略其本身的覆寫值。

參數

參數 說明
module_name string; 必要
要套用此覆寫值的 Bazel 模組依附元件名稱。
path string; 必要
此模組所在目錄的路徑。

module

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 字串;預設值為 ''
。代表此模組的存放區名稱,由模組本身顯示。根據預設,存放區名稱會是模組名稱。您可以指定此值,以便為使用與模組名稱不同的存放區名稱的專案,簡化遷移作業。
bazel_compatibility 字串可迭代項目;預設為 []
。 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 字串; 預設值為 ''
覆寫此模組的註冊表;應使用指定的註冊表,而非從預設的註冊表清單中尋找此模組。

override_repo

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

覆寫由指定模組擴充功能定義的一或多個 repos,並顯示目前模組可見的指定 repos。如果目前的模組不是根模組,或已啟用 `--ignore_dev_dependency`,系統就會忽略此值。

請改用 inject_repo 新增來源集。

參數

參數 說明
extension_proxy module_extension_proxy; 必須提供
module_extension_proxy 是 use_extension 呼叫傳回的模組擴充功能 Proxy 物件。
args 必填
extensions 中的 repos,應與目前模組中同名的 repos 重寫。
kwargs required
套用至擴充功能產生的存放區的覆寫值,其中值為目前模組範圍中的存放區名稱,而鍵則是擴充功能中會覆寫的存放區名稱。

register_execution_platforms

None register_execution_platforms(dev_dependency=False, *platform_labels)

指定在選取這個模組時要註冊的已定義執行平台。應為絕對目標模式 (即以 @// 開頭)。詳情請參閱工具鍊解析。展開至多個目標的模式 (例如 :all) 會依字典順序依名稱註冊。

參數

參數 說明
dev_dependency bool; 預設為 False
如果為 true,如果目前的模組不是根模組,或已啟用 `--ignore_dev_dependency`,則系統就不會註冊執行平台。
platform_labels 字串序列; 必填
要註冊的目標模式。

register_toolchains

None register_toolchains(dev_dependency=False, *toolchain_labels)

指定在選取這個模組時要註冊的已定義工具鍊。應為絕對目標模式 (即以 @// 開頭)。詳情請參閱工具鍊解析。可展開至多個目標的模式 (例如 :all) 會依照字典順序 (而非工具鍊實作名稱) 以字母順序註冊。

參數

參數 說明
dev_dependency bool; 預設為 False
如果為 true,如果目前的模組不是根模組,或是已啟用 `--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 字串;預設值為 ''
。覆寫依附元件圖表中此模組的宣告版本。換句話說,這個模組會「固定」至這個覆寫版本。如果您只想覆寫註冊表或修補程式,可以省略這個屬性。
registry 字串; 預設值為 ''
覆寫此模組的註冊表;應使用指定的註冊表,而非從預設的註冊表清單中尋找此模組。
patches 字串的可迭代項目;預設為 []
。修補檔案必須位於頂層專案的來源樹狀結構中。系統會依清單順序套用這些規則。

如果修補程式變更了 MODULE.bazel 檔案,只有在根模組提供修補檔案時,這些變更才會生效。

patch_cmds 字串的可迭代項目;預設為 []
。在套用修補程式後,在 Linux/Macos 上套用的 Bash 指令序列。

對 MODULE.bazel 檔案所做的變更不會生效。

patch_strip int;預設值為 0
。與 Unix 修補程式的 --strip 引數相同。

use_extension

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

傳回代表模組擴充功能的 Proxy 物件,可呼叫其方法來建立模組擴充功能標記。

參數

參數 說明
extension_bzl_file 字串; 必要
這是 Starlark 檔案的標籤,用於定義模組擴充功能。
extension_name string; 必要
要使用的模組擴充功能名稱。這個名稱的符號必須由 Starlark 檔案匯出。
dev_dependency bool; 預設為 False
如果為 true,如果目前的模組不是根模組,或已啟用 `--ignore_dev_dependency`,系統就會忽略模組擴充功能的這項用法。
isolate bool;預設值為 False
實驗功能。這個參數仍在實驗階段,可能隨時變更。請勿依賴這項功能。您可以設定 --experimental_isolated_extension_usages
,以實驗方式啟用此功能。如果設為 true,則模組擴充功能的這項用法會與此模組和其他模組中的所有其他用法隔離。為此用途建立的代碼不會影響其他用途,而擴充功能為此用途產生的存放區也會與擴充功能產生的其他存放區有所區別。

這個參數目前為實驗功能,且僅適用於 --experimental_isolated_extension_usages 旗標。

use_repo

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

將指定模組擴充功能產生的一或多個 repos 匯入目前模組的範圍。

參數

參數 說明
extension_proxy module_extension_proxy; 必須提供
module_extension_proxy 是 use_extension 呼叫傳回的模組擴充功能 Proxy 物件。
args 必填
The names of the repos to import.
kwargs required
Specifies certain repos to import into the scope of the current module with different names. 鍵應為在目前範圍中使用的名稱,而值應為模組擴充功能匯出的原始名稱。

use_repo_rule

repo_rule_proxy use_repo_rule(repo_rule_bzl_file, repo_rule_name)

傳回代理值,可在 MODULE.bazel 檔案中直接以存放區規則呼叫一或多個。以這種方式建立的 repo 只會顯示在目前模組下方,且名稱會使用代理程式上的 name 屬性宣告。隱含的布林值 dev_dependency 屬性也可以用於 Proxy,用來表示只有在目前模組為根模組時,才會建立特定存放區。

參數

參數 說明
repo_rule_bzl_file string; 必要
這是定義存放區規則的 Starlark 檔案標籤。
repo_rule_name 字串; 必要
要使用的存放區規則名稱。這個名稱的符號必須由 Starlark 檔案匯出。