MODULE.bazel 檔案

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

bazel_dep

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

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

參數

參數 說明
name 字串; 必要
要新增為直接依附元件的模組名稱。
version string;預設為 ''
要新增為直接依附元件的模組版本。
max_compatibility_level int;預設為 -1
。 如果要將模組新增為直接依附元件,則支援的最大 compatibility_level 為 模組版本會隱含支援的最低 compatible_level,以及如未指定屬性,其上限。
repo_name 字串;預設為 ''
。代表此依附元件的外部存放區名稱。此為預設模組的名稱。
dev_dependency bool; 預設為 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 string;必要
要套用此覆寫值的 Bazel 模組依附元件名稱。
remote string; 必填
遠端 Git 存放區的網址。
commit 字串; 預設值為 ''
應檢出的提交。
patches 字串的可迭代項目;預設為 []
。修補檔案必須位於頂層專案的來源樹狀結構中。系統會依照清單順序套用這些規則。
patch_cmds 字串可迭代項目;預設為 []
。在套用修補程式後,在 Linux/Macos 上套用的 Bash 指令序列。
patch_strip int;預設值為 0
。與 Unix 修補程式的 --strip 引數相同。
init_submodules bool;預設值為 False
。在擷取的存放區中,Git 子模組是否應以遞迴方式初始化。
strip_prefix string;預設為 ''
這是從已擷取檔案中移除的目錄前置字串。這可用於指定 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 string; required
指向要納入的檔案的標籤。標籤必須指向主存放區中的檔案,也就是說,開頭必須是雙斜線 (//)。

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 名稱,而鍵則是這些 repos 在擴充功能中顯示的名稱。

local_path_override

None local_path_override(module_name, path)

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

參數

參數 說明
module_name 字串; 必要
Bazel 模組依附元件的名稱,用於套用這項覆寫值。
path string; required
這個模組所在的目錄路徑。

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 字串; 必要
Bazel 模組依附元件的名稱,用於套用這項覆寫值。
versions string 的 Iterable;必填
明確指定允許共存的版本。這些版本必須已列在依附元件圖表預先選取項目中。這個模組的依附元件會「升級」至相容性層級中允許的最近較高版本,但如果依附元件的版本高於同層級中允許的任何版本,就會導致錯誤。
registry string;預設值為 ''
覆寫這個模組的登錄檔;應使用指定的登錄檔,而不是從預設的註冊資料庫找到這個模組。

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 必要
擴充功能中的存放區,應使用目前模組中相同名稱的存放區覆寫。
kwargs 必要
覆寫設定會套用至擴充功能產生的存放區,其中值是目前模組範圍內的存放區名稱,金鑰則是會在擴充功能中覆寫的存放區名稱。

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 字串; 必要
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 string;必要
定義模組擴充功能的 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 檔案中直接叫用為存放區規則一或多次。只有目前的模組可以查看以這種方式建立的重組,該模組的名稱在 Proxy 上透過 name 屬性宣告。您也可以在 Proxy 上使用隱含布林值 dev_dependency 屬性,代表只有在目前模組為根模組時,系統才會建立特定存放區。

參數

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