MODULE.bazel 文件

报告问题 Nightly · 8.3 · 8.2 · 8.1 · 8.0 · 7.6

MODULE.bazel 文件中可用的方法。

成员

archive_override

None archive_override(module_name, urls, integrity='', strip_prefix='', patches=[], patch_cmds=[], patch_strip=0)

指定此依赖项应来自特定位置的归档文件(zip、gzip 等),而不是来自注册表。此指令仅在根模块中生效;换句话说,如果某个模块被其他模块用作依赖项,则其自身的替换项会被忽略。

参数

参数 说明
module_name 必需
要应用此替换项的 Bazel 模块依赖项的名称。
urls string;或 string 的可迭代对象;必需参数
归档的网址;可以是 http(s):// 或 file:// 网址。
integrity 默认值为 ''
归档文件的预期校验和,采用子资源完整性格式。
strip_prefix 默认值为 ''
要从提取的文件中剥离的目录前缀。
patches 字符串的可迭代对象; 默认值为 []
指向要为此模块应用的补丁文件的标签列表。补丁文件必须存在于顶级项目的源代码树中。它们会按列表顺序应用。
patch_cmds 字符串的可迭代对象;默认值为 []
在应用补丁后要在 Linux/Macos 上应用的一系列 Bash 命令。
patch_strip 默认值为 0
与 Unix patch 的 --strip 实参相同。

bazel_dep

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

声明对另一个 Bazel 模块的直接依赖关系。

参数

参数 说明
name 必需
要添加为直接依赖项的模块的名称。
version 默认值为 ''
要添加为直接依赖项的模块的版本。
max_compatibility_level 默认值为 -1
作为直接依赖项添加的模块支持的最大 compatibility_level。模块的版本表示支持的最低 compatibility_level,如果未指定此属性,则还表示支持的最高 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 必需
要应用此替换项的 Bazel 模块依赖项的名称。
remote 必需
远程 Git 代码库的网址。
commit 默认值为 ''
应检出的提交。
patches 字符串的可迭代对象; 默认值为 []
指向要为此模块应用的补丁文件的标签列表。补丁文件必须存在于顶级项目的源代码树中。它们会按列表顺序应用。
patch_cmds 字符串的可迭代对象;默认值为 []
在应用补丁后要在 Linux/Macos 上应用的一系列 Bash 命令。
patch_strip 默认值为 0
与 Unix patch 的 --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 必需
指向要包含的文件的标签。标签必须指向主代码库中的文件;换句话说,标签必须以双斜杠 (//) 开头。

local_path_override

None local_path_override(module_name, path)

指定依赖项应来自本地磁盘上的某个目录。此指令仅在根模块中生效;换句话说,如果某个模块被其他模块用作依赖项,则其自身的替换项会被忽略。

参数

参数 说明
module_name 必需
要应用此替换项的 Bazel 模块依赖项的名称。
path 必需
相应模块所在的目录的路径。

module

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

声明当前 Bazel 代码库所表示的 Bazel 模块的某些属性。这些属性要么是模块的基本元数据(例如名称和版本),要么会影响当前模块及其依赖项的行为。

此指令最多只能调用一次,如果调用,则必须是 MODULE.bazel 文件中的第一个指令。只有当相应模块是根模块(即不会被其他模块依赖)时,才能省略此属性。

参数

参数 说明
name 默认值为 ''
模块的名称。只有当相应模块是根模块(即不会被其他模块依赖)时,才能省略此属性。有效的模块名称必须符合以下条件:1) 只能包含小写字母 (a-z)、数字 (0-9)、句点 (.)、连字符 (-) 和下划线 (_);2) 以小写字母开头;3) 以小写字母或数字结尾。
version 默认值为 ''
模块的版本。只有当相应模块是根模块(即不会被其他模块依赖)时,才能省略此属性。版本必须采用宽松的 SemVer 格式;如需了解详情,请参阅文档
compatibility_level 默认值为 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 中存在导致您无法正常使用的 bug,但在后续版本中已修复,则使用此值。

multiple_version_override

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

指定依赖项仍应来自注册表,但应允许其多个版本共存。如需了解详情,请参阅文档。此指令仅在根模块中生效;换句话说,如果某个模块被其他模块用作依赖项,则其自身的替换项会被忽略。

参数

参数 说明
module_name 必需
要应用此替换项的 Bazel 模块依赖项的名称。
versions 字符串的可迭代对象;必需
明确指定允许共存的版本。这些版本必须已存在于预选的依赖关系图中。此模块的依赖项将“升级”到同一兼容性级别中最近的更高允许版本,而版本高于同一兼容性级别中任何允许版本的依赖项将导致错误。
registry 默认值为 ''
替换相应模块的注册表;不从默认注册表列表中查找相应模块,而应使用给定的注册表。

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 必需
要应用此替换项的 Bazel 模块依赖项的名称。
version 默认值为 ''
替换依赖关系图中相应模块的声明版本。换句话说,相应模块将“固定”到此替换版本。如果只想替换注册表或补丁,则可以省略此属性。
registry 默认值为 ''
替换相应模块的注册表;不从默认注册表列表中查找相应模块,而应使用给定的注册表。
patches 字符串的可迭代对象; 默认值为 []
指向要为此模块应用的补丁文件的标签列表。补丁文件必须存在于顶级项目的源代码树中。它们会按列表顺序应用。
patch_cmds 字符串的可迭代对象;默认值为 []
在应用补丁后要在 Linux/Macos 上应用的一系列 Bash 命令。
patch_strip 默认值为 0
与 Unix patch 的 --strip 实参相同。

use_extension

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

返回表示模块扩展的代理对象;可以调用其方法来创建模块扩展标记。

参数

参数 说明
extension_bzl_file 必需
用于定义模块扩展程序的 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)

将给定模块扩展程序生成的一个或多个 repo 导入到当前模块的范围内。

参数

参数 说明
extension_proxy 必需
use_extension 调用返回的模块扩展代理对象。
args 必需
要导入的代码库的名称。
kwargs 必需
指定要以不同名称导入到当前模块范围内的特定代码库。键应为要在当前作用域中使用的名称,而值应为模块扩展程序导出的原始名称。

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 必需
用于定义库规则的 Starlark 文件的标签。
repo_rule_name 必需
要使用的 repo 规则的名称。具有此名称的符号必须由 Starlark 文件导出。