MODULE.bazel 文件

报告问题

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 string 的可迭代对象;默认值为 []
指向要应用于此模块的补丁文件的标签列表。补丁文件必须位于顶级项目的源代码树中。它们按列表顺序应用。
patch_cmds string 的迭代;默认值为 []
应用补丁后,在 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)

指定依赖项应来自 Git 代码库的特定提交。此指令仅在根模块中生效;换句话说,如果某个模块被其他人用作依赖项,系统会忽略该模块自己的替换项。

参数

参数 说明
module_name 必需
要应用此替换的 Bazel 模块依赖项的名称。
remote 必需
远程 Git 代码库的网址。
commit 默认值为 ''
应检出的提交。
patches string 的可迭代对象;默认值为 []
指向要应用于此模块的补丁文件的标签列表。补丁文件必须位于顶级项目的源代码树中。它们按列表顺序应用。
patch_cmds string 的迭代;默认值为 []
应用补丁后,在 Linux/Macos 上应用的 Bash 命令序列。
patch_strip 默认值为 0
与 Unix 补丁的 --strip 参数相同。

local_path_override

None local_path_override(module_name, path)

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

参数

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

模块

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

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

最多只能调用一次。仅当此模块是根模块时才能省略此参数(例如,如果其他模块不会依赖该模块)。

参数

参数 说明
name 默认值为 ''
模块的名称。仅当此模块是根模块时,才能省略(例如,如果其他模块不依赖于此模块)。有效的模块名称必须:1) 只能包含小写字母 (a-z)、数字 (0-9)、点 (.)、连字符 (-) 和下划线 (_);2) 以小写字母开头;3) 以小写字母或数字结尾。
version 默认值为 ''
模块的版本。仅当此模块是根模块时,才能省略(例如,如果其他模块不依赖于此模块)。版本必须采用宽松的 SemVer 格式;请参阅文档了解详情。
compatibility_level 默认值为 0
模块的兼容性级别;每次引入不兼容的重大更改时,都应更改此级别。就 SemVer 而言,这本质上是模块的“主要版本”,只不过它没有嵌入版本字符串本身,而是作为单独的字段存在。具有不同兼容性级别的模块参与版本解析就像它们是具有不同名称的模块一样,但最终的依赖关系图不能包含名称相同但兼容性级别的多个模块(除非 multiple_version_override 有效)。如需了解详情,请参阅文档
repo_name 默认值为 ''
表示此模块的代码库的名称,如模块本身所示。默认情况下,代码库的名称是模块的名称。如果项目一直使用与其模块名称不同的代码库名称,可以指定此属性,以便轻松进行迁移。
bazel_compatibility string 的迭代;默认值为 []
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 string 的迭代;必需
明确指定允许共存的版本。这些版本必须已存在于依赖关系图预选中。此模块的依赖项将“升级”到同一兼容性级别下所允许的最接近的版本,而如果依赖项的版本高于同一兼容性级别所允许的任何版本,则会导致错误。
registry 默认值为 ''
覆盖此模块的注册表;应使用给定的注册表,而不是从默认的注册表列表中查找此模块。

register_execution_platforms

None register_execution_platforms(dev_dependency=False, *platform_labels)

指定要在选择此模块时注册的已定义执行平台。应为绝对目标模式(即以 @// 开头)。如需了解详情,请参阅工具链解析

参数

参数 说明
dev_dependency 默认值为 False
如果为 true,则当当前模块不是根模块或“--ignore_dev_dependency”处于启用状态时,系统不会注册执行平台。
platform_labels string序列;必需
要注册的平台的标签。

register_toolchains

None register_toolchains(dev_dependency=False, *toolchain_labels)

指定要在选择此模块时注册的已定义工具链。应为绝对目标模式(即以 @// 开头)。如需了解详情,请参阅工具链解析

参数

参数 说明
dev_dependency 默认值为 False
如果为 true,则当当前模块不是根模块或“--ignore_dev_dependency”处于启用状态时,系统将不会注册工具链。
toolchain_labels string序列;必需
要注册的工具链的标签。标签可以包含 :all,在这种情况下,软件包中的所有工具链提供目标都将按名称的字典顺序注册。

single_version_override

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

指定依赖项应仍来自注册表,但其版本应固定,或注册表被覆盖,或已应用的补丁列表。此指令仅在根模块中生效;换句话说,如果某个模块被其他人用作依赖项,系统会忽略该模块自己的替换项。

参数

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

use_extension

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

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

参数

参数 说明
extension_bzl_file 必需
用于定义模块扩展名的 Starlark 文件标签。
extension_name required
要使用的模块扩展的名称。具有此名称的符号必须由 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)

将给定模块扩展生成的一个或多个代码库导入到当前模块的作用域中。

参数

参数 说明
extension_proxy required
use_extension 调用返回的模块扩展代理对象。
args 必需
要导入的代码库的名称。
kwargs required
指定要导入当前模块范围(但名称不同的)的某些代码库。键应该是要在当前范围内使用的名称,而值应该是模块扩展程序导出的原始名称。

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