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, urls, integrity='', strip_prefix='', patches=[], patch_cmds=[], patch_strip=0)

指定這個依附元件應來自特定位置的封存檔案 (zip、gzip 等),而不是來自登錄。這項指示僅會在根模組中生效;換句話說,如果模組用於其他依附元件,則系統會忽略其本身的覆寫值。

參數

參數 說明
module_name required
要套用此覆寫值的 Bazel 模組依附元件名稱。
urls 字串字串的可迭代項目; 必要
封存檔案的網址;可以是 http(s):// 或 file:// 網址。
integrity 預設為 ''
封存檔案的預期總和檢查碼,採用子資源完整性格式。
strip_prefix 預設為 ''
要從解壓縮檔案中移除的目錄前置字串。
patches 字串的可迭代項目;預設為 []
。修補檔案必須位於頂層專案的來源樹狀結構中。系統會依清單順序套用這些規則。
patch_cmds 字串可迭代項目;預設為 []
。在套用修補程式後,在 Linux/Macos 上套用的 Bash 指令序列。
patch_strip 預設值為 0
與 Unix 修補程式的 --strip 引數相同。

bazel_dep

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

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

參數

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

git_override

None git_override(module_name, remote, commit='', patches=[], patch_cmds=[], patch_strip=0, init_submodules=False, strip_prefix='')

指定依附元件應來自 Git 存放區的特定修訂版本。這項指示僅會在根模組中生效;換句話說,如果模組用於其他依附元件,則系統會忽略其本身的覆寫值。

參數

參數 說明
module_name required
要套用此覆寫值的 Bazel 模組依附元件名稱。
remote required
Git 遠端存放區的網址。
commit 預設為 ''
應檢出的提交。
patches 字串的可迭代項目;預設為 []
。修補檔案必須位於頂層專案的來源樹狀結構中。系統會依清單順序套用這些規則。
patch_cmds 字串可迭代項目;預設為 []
。在套用修補程式後,在 Linux/Macos 上套用的 Bash 指令序列。
patch_strip 預設值為 0
與 Unix 修補程式的 --strip 引數相同。
init_submodules 預設值為 False
Git 子模組是否應在擷取的存放區中遞迴初始化。
strip_prefix 預設為 ''
要從解壓縮檔案中移除的目錄前置字串。這可用於指定 Git 存放區的子目錄。請注意,子目錄必須有自己的 `MODULE.bazel` 檔案,且模組名稱必須與傳遞至此 `git_override` 的 `module_name` 引數相同。

包含

None include(label)

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

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

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

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

參數

參數 說明
label required
指向要納入的檔案標籤。標籤必須指向主存放區中的檔案,也就是說,開頭必須是雙斜線 (//)。

inject_repo

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

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

請改用 override_repo 覆寫現有的 repo。

參數

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

local_path_override

None local_path_override(module_name, path)

指定依附元件應來自本機磁碟上的特定目錄。這項指示僅會在根模組中生效;換句話說,如果模組用於其他依附元件,則系統會忽略其本身的覆寫值。

參數

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

module

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

宣告目前 Bazel 存放區所代表的 Bazel 模組的特定屬性。這些屬性是模組的重要中繼資料 (例如名稱和版本),或是會影響目前模組及其依附元件的行為。

最多只能呼叫一次,且如果要呼叫,則必須是 MODULE.bazel 檔案中的第一個指示。只有在這個模組是根模組 (也就是不會受到其他模組依附) 時,才能省略這個屬性。

參數

參數 說明
name 預設值為 ''
The name of the module. 只有在這個模組是根模組 (也就是不會受到其他模組依附) 時,才能省略。有效的模組名稱必須符合以下條件:1) 只能包含小寫英文字母 (a-z)、數字 (0-9)、半形句點 (.)、連字號 (-) 和底線 (_);2) 開頭須為小寫英文字母;3) 結尾須為小寫英文字母或數字。
version 預設為 ''
The version of the module. 只有在這個模組是根模組 (也就是不會受到其他模組依附) 時,才能省略。版本必須採用放寬的 SemVer 格式;詳情請參閱說明文件
compatibility_level 預設為 0
The compatibility level of the module; this should be changed every time a major incompatible change is introduced. 從 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 required
要套用此覆寫值的 Bazel 模組依附元件名稱。
versions string 的疊代項目;必填
明確指定允許共存的版本。這些版本必須已在依附元件圖表預先選取項目中。這個模組的依附元件會「升級」至相容性層級中允許的最近較高版本,但如果依附元件的版本高於同層級中允許的任何版本,就會導致錯誤。
registry 預設為 ''
覆寫此模組的註冊機制;請使用指定的註冊機制,而非從預設的註冊機制清單中尋找此模組。

override_repo

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

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

請改用 inject_repo 新增來源集。

參數

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

register_execution_platforms

None register_execution_platforms(dev_dependency=False, *platform_labels)

指定在選取這個模組時要註冊的已定義執行平台。應為絕對目標模式 (即以 @// 開頭)。詳情請參閱工具鍊解析

參數

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

register_toolchains

None register_toolchains(dev_dependency=False, *toolchain_labels)

指定在選取這個模組時要註冊的已定義工具鍊。應為絕對目標模式 (即以 @// 開頭)。詳情請參閱工具鍊解析

參數

參數 說明
dev_dependency 預設為 False
如果為 true,如果目前的模組不是根模組,或是已啟用 `--ignore_dev_dependency`,則不會註冊工具鍊。
toolchain_labels 字串序列; 必要
要註冊的工具鍊標籤。標籤可以包含 :all,在這種情況下,套件中所有提供工具鍊的目標都會依字典順序依名稱註冊。

single_version_override

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

指定依附元件仍應來自登錄,但應將其版本固定,或覆寫其登錄,或套用修補程式清單。這項指示僅會在根模組中生效;換句話說,如果模組用於其他依附元件,則系統會忽略其本身的覆寫值。

參數

參數 說明
module_name required
要套用此覆寫值的 Bazel 模組依附元件名稱。
version 預設為 ''
覆寫依附元件圖表中此模組的宣告版本。換句話說,這個模組會「固定」至這個覆寫版本。如果您只想覆寫註冊表或修補程式,可以省略這個屬性。
registry 預設為 ''
覆寫此模組的註冊機制;請使用指定的註冊機制,而非從預設的註冊機制清單中尋找此模組。
patches 字串的可迭代項目;預設為 []
。修補檔案必須位於頂層專案的來源樹狀結構中。系統會依清單順序套用這些規則。

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

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

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

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

use_extension

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

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

參數

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

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

use_repo

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

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

參數

參數 說明
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 required
Starlark 檔案的標籤,用於定義存放區規則。
repo_rule_name required
The name of the repo rule to use. 這個名稱的符號必須由 Starlark 檔案匯出。