本地代码库规则

报告问题 查看源代码 每夜 build · 7.4 . 7.3 · 7.2 · 7.1敬上 · 7.0敬上 · 6.5

您可以从 @bazel_tools//tools/build_defs/repo:local.bzl

用于将本地文件系统中的目录作为代码库提供的规则。

设置

要在模块扩展程序中使用这些规则,请将这些规则加载到 .bzl 文件中,然后从 扩展的实现函数。例如,如需使用 local_repository,请使用以下代码:

load("@bazel_tools//tools/build_defs/repo:local.bzl", "local_repository")

def _my_extension_impl(mctx):
  local_repository(name = "foo", path = "foo")

my_extension = module_extension(implementation = _my_extension_impl)

或者,您也可以使用 use_repo_rule 直接在 MODULE.bazel 文件中调用这些代码库规则:

local_repository = use_repo_rule("@bazel_tools//tools/build_defs/repo:local.bzl", "local_repository")
local_repository(name = "foo", path = "foo")

local_repository

local_repository(name, path, repo_mapping)

将已包含 Bazel 文件的本地目录作为代码库提供。此目录应已包含 Bazel BUILD 文件和代码库边界文件。如果不包含这些文件,请考虑改用 <a href="#new_local_repository"><code>new_local_repository</code></a>。

属性

name 姓名;必需

此代码库的唯一名称。

path 字符串;必需

要作为代码库提供的目录的路径。

路径可以是绝对路径,也可以是工作区根目录的相对路径。

repo_mapping 字典:String ->String;必需

从本地代码库名称到全局代码库名称的字典。这样,您就可以控制此代码库的依赖项的工作区依赖项解析。

例如,条目 `"@foo": "@bar"` 声明,每当此仓库依赖于 `@foo`(例如对 `@foo//some:target` 的依赖项)时,它实际上应在全局声明的 `@bar` (`@bar//some:target`) 中解析该依赖项。

new_local_repository

new_local_repository(name, build_file, build_file_content, path, repo_mapping)

将不包含 Bazel 文件的本地目录作为代码库提供。此目录无需包含 Bazel BUILD 文件或代码库边界文件;这些文件将由此代码库规则创建。如果目录中已包含 Bazel 文件,请考虑改用 <a href="#local_repository"><code>local_repository</code></a>。

属性

name 姓名;必需

此代码库的唯一名称。

build_file 标签;可选

要用作此代码库的 BUILD 文件的文件。

必须指定 build_filebuild_file_content 中的一个(且只能指定其中一个)。

此标签所引用的文件不必命名为 BUILD,但可以这样命名。BUILD.new-repo-name 之类的名称可能很适合用来将其与实际的 BUILD 文件区分开来。

build_file_content String;可选

要为此代码库创建的 BUILD 文件的内容。

必须指定 build_filebuild_file_content 中的一个(且只能指定其中一个)。

path 字符串;必需

要作为代码库提供的目录的路径。

路径可以是绝对路径,也可以是工作区根目录的相对路径。

repo_mapping 字典:String ->String;必需

从本地代码库名称到全局代码库名称的字典。这样,您就可以控制此代码库的依赖项的工作区依赖项解析。

例如,条目 "@foo": "@bar"` 声明,无论何时此仓库依赖于 `@foo`(例如 `@foo//some:target` 的依赖项),它实际上都应在全局声明的 `@bar` (`@bar//some:target`) 中解析该依赖项。