本地代码库规则

以下函数可以从 @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

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

local_repository(name, path, repo_mapping)

将已包含 Bazel 文件的本地目录作为代码库提供。此目录应已包含 Bazel BUILD 文件和代码库边界文件。如果它不包含这些文件,请考虑改用new_local_repository

属性

name 名称;必需

此代码库的唯一名称。

path 字符串;必需

要作为代码库提供的目录的路径。 该路径可以是绝对路径,也可以是相对于工作区根目录的路径。

repo_mapping 字典:字符串 -> 字符串;可选

仅在 `WORKSPACE` 上下文中:从本地代码库名称到全局代码库名称的字典。这样可以控制此代码库的依赖项的工作区依赖项解析。 例如,条目 `"@foo": "@bar"` 声明,对于此代码库依赖于 `@foo` 的任何时间(例如依赖于 `@foo//some:target`),它实际上应在全局声明的 `@bar` (`@bar//some:target`) 中解析该依赖项。 `MODULE.bazel` 上下文(在模块扩展程序的实现函数内调用代码库规则时)不支持此属性。

new_local_repository

load("@bazel//tools/build_defs/repo:local.bzl", "new_local_repository")

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

将不包含 Bazel 文件的本地目录作为代码库提供。此目录不必包含 Bazel BUILD 文件或代码库边界文件;它们将由此代码库规则创建。如果该目录已包含 Bazel 文件,请考虑改用 local_repository

属性

name 名称;必需

此代码库的唯一名称。

build_file 标签;可选

要用作此代码库的 BUILD 文件的文件。 必须指定 `build_file` 和 `build_file_content` 中的一个。 此标签寻址的文件不必命名为 BUILD,但可以命名为 BUILD。类似 `BUILD.new-repo-name` 的名称可能有助于将其与实际 BUILD 文件区分开。

build_file_content 字符串;可选

要为此代码库创建的 BUILD 文件的内容。 必须指定 `build_file` 和 `build_file_content` 中的一个。

path 字符串;必需

要作为代码库提供的目录的路径。 该路径可以是绝对路径,也可以是相对于工作区根目录的路径。

repo_mapping 字典:字符串 -> 字符串;可选

仅在 `WORKSPACE` 上下文中:从本地代码库名称到全局代码库名称的字典。这样可以控制此代码库的依赖项的工作区依赖项解析。 例如,条目 `"@foo": "@bar"` 声明,对于此代码库依赖于 `@foo` 的任何时间(例如依赖于 `@foo//some:target`),它实际上应在全局声明的 `@bar` (`@bar//some:target`) 中解析该依赖项。 `MODULE.bazel` 上下文(在模块扩展程序的实现函数内调用代码库规则时)不支持此属性。