# @bazel/esbuild 中文文档

规范地址：https://npmcn.com/package/%40bazel/esbuild/

版本：5\.8\.1
npm 元数据更新时间：2023-02-16T23:56:50.791Z
中文译文更新时间：2026-11-07T18:41:26.119Z
软件包许可：Apache-2\.0

本文由上游 README 翻译，可能存在偏差，请结合原文核对 API、命令与配置。版权与许可归原作者所有。

原始 npm 页面：https://www.npmjs.com/package/%40bazel/esbuild
原文对照：https://npmcn.com/package/%40bazel/esbuild/?lang=original
项目主页：https://github.com/bazelbuild/rules_nodejs#readme
源码仓库：https://github.com/bazelbuild/rules_nodejs

## 关键信息（来自 npm 元数据）

- 包体积（解压后）：56.7 kB，10 个文件
- TypeScript 类型：未声明
- 运行依赖：0 个
- 首次发布：2021-02-13T00:24:02.686Z
- 最新版本发布：2023-02-16T23:56:50.580Z
- 近 30 天下载量：58685（2026-10-08 至 2026-11-06，npm 官方下载统计）
- 已发布版本数：52（近 12 个月 0 个）

## 中文简介

bazel 的规则构建

## 安装

```sh
npm install @bazel/esbuild
```

也可以使用：`pnpm add @bazel/esbuild`、`yarn add @bazel/esbuild`、`bun add @bazel/esbuild`

## README

# bazel 的规则构建

建筑规则运行 [兴建](https://github.com/evanw/esbuild) 巴泽尔的捆绑工具. esbuild是一个极快的 JavaScript 捆绑器,用 Go 所写的,它的 [当前基准](https://esbuild.github.io/faq/#benchmark-details) 显示它可以更快的320x 其他捆绑

## 安装

添加数据 `@bazel/esbuild` npm 包给您的 `devDependencies` 内 `package.json`。 。 。 .

```
npm install --save-dev @bazel/esbuild
```

或使用线条

```
yarn add -D @bazel/esbuild
```

Esbuild 二进制自动为您的平台取出,并通过 Bazel 工具链被曝光 . 要做到这一点,请添加 `esbuild_repositories` 规则给您 `WORKSPACE`。 。 。 . 您需要将其指向 npm install 或 barrn install 创建的仓库 `@bazel/esbuild` 正在获取软件包。 (按惯例,这是 `npm`) (中文(简体) ). 设定 `npm_repository` 属性到该寄存器的名称.

```python
npm_install(
    name = "npm",
    # @bazel/esbuild is a dependency in this package.json
    package_json = "//:package.json",
    package_lock_json = "//:package-lock.json",
)

load("@build_bazel_rules_nodejs//toolchains/esbuild:esbuild_repositories.bzl", "esbuild_repositories")

esbuild_repositories(npm_repository = "npm")
```

> 为避免急于获取所有 npm 依赖性, 此负载语句来自“ Built- in ” `@build_bazel_rules_nodejs` 而不是从 `@npm`。 。 。 . 在规则5.0中,我们打算通过获得整个建设支持来纠正这种层层违规现象 独立于 rules nodejs 分发, 不需要从 npm 安装任何软件包 .

参见 API 文件 `esbuild_repositories` 用于自定义 Bazel 如何下载 esbuild 软件包 从npm。 或者,高级用户可以通过定义 Esbuild 存储器来完全推翻下载 在您的 workSPACE 文件中 `maybe` 内部 `esbuild_repositories` 被跳过.

## 概览

这个 `esbuild` 规则可以取一个JS或TS依赖树并捆绑到一个单一文件上,或者分拆到多个文件,输出一个目录.

```python
load("@npm//@bazel/esbuild:index.bzl", "esbuild")
load("@npm//@bazel/typescript:index.bzl", "ts_project")

ts_project(
    name = "lib",
    srcs = ["a.ts"],
)

esbuild(
    name = "bundle",
    entry_point = "a.ts",
    deps = [":lib"],
)
```

上面将创建三个输出文件, `bundle.js`, (中文(简体) ), `bundle.js.map` 财务报告和审定财务报表 `bundle_metadata.json` 它包含捆绑的元数据,用于协助调试和再吸收跟踪.

要创建代码分割捆绑, 设置 `splitting = True` 编辑 `esbuild` 规则.

```python
load("@npm//@bazel/esbuild:index.bzl", "esbuild")
load("@npm//@bazel/typescript:index.bzl", "ts_project")

ts_project(
    name = "lib",
    srcs = ["a.ts"],
    deps = [
        "@npm//foo",
    ],
)

esbuild(
    name = "bundle",
    entry_point = "a.ts",
    deps = [":lib"],
    splitting = True,
)
```

这将创建一个输出目录, 包含所有代码分割块及其源图文件

## 兴建

**用户**

esbuild([name](https://npmcn.com/package/%40bazel/esbuild/#readme-esbuild-name), [args](https://npmcn.com/package/%40bazel/esbuild/#readme-esbuild-args), [args\_json](https://npmcn.com/package/%40bazel/esbuild/#readme-esbuild-args_json), [config](https://npmcn.com/package/%40bazel/esbuild/#readme-esbuild-config), [define](https://npmcn.com/package/%40bazel/esbuild/#readme-esbuild-define), [define\_settings](https://npmcn.com/package/%40bazel/esbuild/#readme-esbuild-define_settings), [deps](https://npmcn.com/package/%40bazel/esbuild/#readme-esbuild-deps), [entry\_point](https://npmcn.com/package/%40bazel/esbuild/#readme-esbuild-entry_point), [entry\_points](https://npmcn.com/package/%40bazel/esbuild/#readme-esbuild-entry_points),
        [external](https://npmcn.com/package/%40bazel/esbuild/#readme-esbuild-external), [format](https://npmcn.com/package/%40bazel/esbuild/#readme-esbuild-format), [launcher](https://npmcn.com/package/%40bazel/esbuild/#readme-esbuild-launcher), [link\_workspace\_root](https://npmcn.com/package/%40bazel/esbuild/#readme-esbuild-link_workspace_root), [max\_threads](https://npmcn.com/package/%40bazel/esbuild/#readme-esbuild-max_threads), [metafile](https://npmcn.com/package/%40bazel/esbuild/#readme-esbuild-metafile), [minify](https://npmcn.com/package/%40bazel/esbuild/#readme-esbuild-minify), [output](https://npmcn.com/package/%40bazel/esbuild/#readme-esbuild-output),
        [output\_css](https://npmcn.com/package/%40bazel/esbuild/#readme-esbuild-output_css), [output\_dir](https://npmcn.com/package/%40bazel/esbuild/#readme-esbuild-output_dir), [output\_map](https://npmcn.com/package/%40bazel/esbuild/#readme-esbuild-output_map), [platform](https://npmcn.com/package/%40bazel/esbuild/#readme-esbuild-platform), [sourcemap](https://npmcn.com/package/%40bazel/esbuild/#readme-esbuild-sourcemap), [sources\_content](https://npmcn.com/package/%40bazel/esbuild/#readme-esbuild-sources_content), [splitting](https://npmcn.com/package/%40bazel/esbuild/#readme-esbuild-splitting), [srcs](https://npmcn.com/package/%40bazel/esbuild/#readme-esbuild-srcs),
        [stamp](https://npmcn.com/package/%40bazel/esbuild/#readme-esbuild-stamp), [target](https://npmcn.com/package/%40bazel/esbuild/#readme-esbuild-target))

在 Bazel 下运行自制捆绑器

关于建设的更多信息,参见: [https://esbuilding.github.io/ 互联网档案馆的存檔,存档日期2013-12-22](https://esbuild.github.io/)

**捐款**

#### 名称

(单位:千美元)_[名称](https://bazel.build/docs/build-ref.html#name),强制_:这个目标的独有名称.

#### 参数

(单位:千美元)_[词典:字符串 - > 字符串](https://bazel.build/docs/skylark/lib/dict.html)_: 包含在调用 Esbuild 中的额外参数的命令,其中键为参数名. 数值以$( location.) 扩展为准

默认为 `{}`

#### 参数 json

(单位:千美元)_字符串_: 仅内部使用

默认为 `""`

#### 配置

(单位:千美元)_[标签](https://bazel.build/docs/build-ref.html#labels)_: 用于 esbuild 的配置文件,来自 esbuild config 宏. 注意此文件中设置的选项可能会被覆盖 . 见 [https://github.com/bazelbuilding/rules nodejs/tree/stable/packages/esbuilding/test/plugins/BUILD.bazel 互联网档案馆的存檔,存档日期2013-12-22](https://github.com/bazelbuild/rules_nodejs/tree/stable/packages/esbuild/test/plugins/BUILD.bazel) 用于使用 esbuilding 配置和插件的例子。 此属性的依赖性必须提供: 未知的提供者

默认为 `None`

#### 定义

(单位:千美元)_[词典:字符串 - > 字符串](https://bazel.build/docs/skylark/lib/dict.html)_: 全球标识符替换指令. 数值取决于$(位置.)的扩展. 示例

```python
esbuild(
    name = "bundle",
    define = {
        "process.env.NODE_ENV": "production"
    },
)
```

见 [https://esbuilding.github.io/api/#定义](https://esbuild.github.io/api/#define) 详情

默认为 `{}`

#### 定义设置( s)

(单位:千美元)_[词典:标签 - > 字符串](https://bazel.build/docs/skylark/lib/dict.html)_:Starlark的标签命令构建设置和标识符,以被其值所取代. 示例

```python
load("@bazel_skylib//rules:common_settings.bzl", "string_flag")

string_flag(
    name = "api_endpoint",
    build_setting_default = "https://example.com/v1",
)

esbuild(
    name = "bundle",
    define_settings = {
        ":api_endpoint": "API_ENDPOINT",
    },
)
```

建筑环境必须提供 [`BuildSettingInfo`](https://github.com/bazelbuild/bazel-skylib/blob/6e30a77347071ab22ce346b6d20cf8912919f644/rules/common_settings.bzl#L24)。 。 。 . 该值会自动转换为JS文字. 见 [https://docs.bazel.building/versions/main/skylark/config.html#预定义设定](https://docs.bazel.build/versions/main/skylark/config.html#predefined-settings) 更多关于Starlark构建设置的细节。 此属性的依赖性必须提供: 未知的提供者

默认为 `{}`

#### 代码

(单位:千美元)_[标签列表](https://bazel.build/docs/build-ref.html#labels)_: 构建捆绑所需的直接依赖关系列表

默认为 `[]`

#### 输入点( c)

(单位:千美元)_[标签](https://bazel.build/docs/build-ref.html#labels)_:捆绑的切入点(例如:您的主.js或app.js或索引.js)

这是一条快捷键 `entry_points` 属性,带有单个条目. 指定此属性或 `entry_point`但不是两者皆有.

默认为 `None`

#### 条目( 点)

(单位:千美元)_[标签列表](https://bazel.build/docs/build-ref.html#labels)_:捆绑的切入点(例如:您的主.js或app.js或索引.js)

指定此属性或 `entry_point`但不是两者皆有.

默认为 `[]`

#### 外部

(单位:千美元)_字符串列表_: 模块名称清单,这些模块名称被作为外部处理,没有包括在产生的捆绑中

见 [https://esbuilding.github.io/api/# 外语](https://esbuild.github.io/api/#external) 详情

默认为 `[]`

#### 格式

(单位:千美元)_字符串_: 捆绑的输出格式, 当平台是浏览器时默认为iife 和Cjs当平台是节点。 如果执行代码分拆或多个条目 点被指定,默认为 Esm .

见 [https://esbuilding.github.io/api/#format 互联网档案馆的存檔,存档日期2013-12-02](https://esbuild.github.io/api/#format) 详情

默认为 `""`

#### 发射器

(单位:千美元)_[标签](https://bazel.build/docs/build-ref.html#labels),强制_: 仅内部使用

#### 链接 工作空间 root

(单位:千美元)_布尔_: 将工作空间根链接到 bin dir 支持绝对要求, 如“ my wksp/ path/ to/ file ” . 如果需要源文件,则可以复制到bin dir并复制到 bin.

默认为 `False`

#### 最大线条( t)

(单位:千美元)_整数_: 设置 `GOMAXPROCS` 变量以限制 esbuild 可以运行的线程数量. 如果同时实施许多建立规则的做法,这可能会造成经济放缓,那么这一点就是有益的. 对于一般用途,请不要设置此属性.

默认为 `0`

#### 元文件

(单位:千美元)_布尔_: 如果为真, 将沿着输出创建元文件

默认为 `True`

#### 缩小

(单位:千美元)_布尔_:将捆绑与所建的薄膜做成薄膜. 删除白空间,缩短标识符,并使用等同但较短的语法.

设置全部 -- 最小化- \* 旗

见 [https://esbuilding.github.io/api/#minify (英语)](https://esbuild.github.io/api/#minify) 详情

默认为 `False`

#### 产出

(单位:千美元)_[标签](https://bazel.build/docs/build-ref.html#labels)_: 捆绑时输出文件的名称

#### 输出( c)

(单位:千美元)_[标签](https://bazel.build/docs/build-ref.html#labels)_: 宣布一个.css文件将在输出捆绑旁边输出.

如果您的 JS 代码包含导入 . css 文件的导入语句, Esbuild 将放入 包含在主输出文件旁边的文件中,您需要声明。 如果输出 文件名为"foo.js",您应该设置为"foo.css".

#### 输出 dir

(单位:千美元)_布尔_: 如果为真, Esbuilding 将生成包含所有输出文件的输出目录

默认为 `False`

#### 输出( m)

(单位:千美元)_[标签](https://bazel.build/docs/build-ref.html#labels)_: 捆绑时输出源地图的名称

#### 平台

(单位:千美元)_字符串_:要捆绑的平台.

见 [https://esbuilding.github.io/api/#平台](https://esbuild.github.io/api/#platform) 详情

默认为 `"browser"`

#### 源图

(单位:千美元)_字符串_: 定义源图是输出的地方以及如何将它们包含在捆绑中. 默认情况下, 一个单独的 `.js.map` 文件由捆绑生成和引用。 如果“ 外部” , 一个单独的 `.js.map` 文件是生成的,但未被捆绑引用。 如果“ inline” , 将生成一个源图, 并将其内容内嵌到捆绑中( 而没有创建外部源图文件) 。 如果“ 两者” , 则内含源图和 a `.js.map` 文件创建.

见 [https://esbuilding.github.io/api/# sourcemap 互联网档案馆的存檔,存档日期2013-12-02](https://esbuild.github.io/api/#sourcemap) 详情

默认为 `""`

#### 来源( c)

(单位:千美元)_布尔_: 如果虚假, 省略 `sourcesContent` 字段来自生成的源地图

见 [https://esbuilding.github.io/api/#出自-内容](https://esbuild.github.io/api/#sources-content) 详情

默认为 `False`

#### 分割

(单位:千美元)_布尔_: 如果选中的话, Esbuild 将生成一个输出目录, 包含多个切入点的代码分割输出文件

见 [https://esbuilding.github.io/api/#分享](https://esbuild.github.io/api/#splitting) 财务报告和审定财务报表 [https://esbuilding.github.io/api/#出入口点](https://esbuild.github.io/api/#entry-points) 详情

默认为 `False`

#### 弧线

(单位:千美元)_[标签列表](https://bazel.build/docs/build-ref.html#labels)_: 用于构建的源文件

默认为 `[]`

#### 邮票

(单位:千美元)_[标签](https://bazel.build/docs/build-ref.html#labels)_: 是否将构建信息编码到输出中. 可能的数值 : - 说吧 `@rules_nodejs//nodejs/stamp:always`数字 : 总是将构建信息印入输出中,甚至在 \[--nostamp \[stamp\] 构建中也是如此. 应当避免这种设置,因为它可能造成缓存错过远程缓存 任何下游行动 取决于它. - 说吧 `@rules_nodejs//nodejs/stamp:never`数字 : 总是用常数替换构建信息 。 这给了良好的建材结果缓冲. - 说吧 `@rules_nodejs//nodejs/stamp:use_stamp_flag`数字 : 嵌入建构信息由\[---\[无\]标 \[标\]旗所控制. 被标记的二进制除非其依赖关系发生变化,否则不会被重建. \[印 : [https://docs.bazel.building/versions/main/user-manual.html#flag-stamp 页面存档备份,存于互联网档案馆](https://docs.bazel.build/versions/main/user-manual.html#flag--stamp) 这个属性的依赖性必须提供: StampSettingInfo

默认为 `@rules_nodejs//nodejs/stamp:use_stamp_flag`

#### 目标

(单位:千美元)_字符串_: 环境目标(如:es2017, chhrome58, firefox57, safari11,), 边缘16,节点10, Esnext. 默认 es2015.

见 [https://esbuilding.github.io/api/#目标](https://esbuild.github.io/api/#target) 详情

默认为 `"es2015"`

## 配置 构建 工具链

**用户**

configure\_esbuild\_toolchain([name](https://npmcn.com/package/%40bazel/esbuild/#readme-configure_esbuild_toolchain-name), [binary](https://npmcn.com/package/%40bazel/esbuild/#readme-configure_esbuild_toolchain-binary), [exec\_compatible\_with](https://npmcn.com/package/%40bazel/esbuild/#readme-configure_esbuild_toolchain-exec_compatible_with))

鉴于二进制路径和平台限制, 定义构建工具链

**摄影师**

#### 名称

用于此工具链的独有名称,一般为"esbuilt platform arch"的形式

#### 二进制

新建二进制标签

#### 执行 兼容 与

平台制约清单

## 正在构建 配置

**用户**

esbuild\_config([name](https://npmcn.com/package/%40bazel/esbuild/#readme-esbuild_config-name), [config\_file](https://npmcn.com/package/%40bazel/esbuild/#readme-esbuild_config-config_file), [srcs](https://npmcn.com/package/%40bazel/esbuild/#readme-esbuild_config-srcs), [deps](https://npmcn.com/package/%40bazel/esbuild/#readme-esbuild_config-deps), [kwargs](https://npmcn.com/package/%40bazel/esbuild/#readme-esbuild_config-kwargs))

宏用于构建配置文件及其附属属性

**摄影师**

#### 名称

此规则的独特名称

#### 配置文件( f)

配置文件/ 输入点

#### 弧线

配置引用的源文件列表

默认为 `[]`

#### 代码

此配置所需的依赖性列表

默认为 `[]`

#### 宽度

任何其他共同属性

## 新建仓库

**用户**

esbuild\_repositories([npm\_repository](https://npmcn.com/package/%40bazel/esbuild/#readme-esbuild_repositories-npm_repository), [name](https://npmcn.com/package/%40bazel/esbuild/#readme-esbuild_repositories-name), [npm\_args](https://npmcn.com/package/%40bazel/esbuild/#readme-esbuild_repositories-npm_args), [kwargs](https://npmcn.com/package/%40bazel/esbuild/#readme-esbuild_repositories-kwargs))

帮助获取和设置构建版本和工具链

使用 Bazel 的下载器( 通过 `http_archive`) 获取 esbuild 软件包 页:1 `npm_install`编号 :`yarn_install` 在你的工作舱. 要配置下载地点, 您会制作一个包含重写规则的文件, 如

```
rewrite (registry.nodejs.org)/(.*) artifactory.build.internal.net/artifactory/$1/$2
```

您可以在 Bazel 来源中找到一些关于重写图案的文件 : [Url Rewriter Config.java (英语)](https://github.com/bazelbuild/bazel/blob/4.2.1/src/main/java/com/google/devtools/build/lib/bazel/repository/downloader/UrlRewriterConfig.java#L66)

那就用那个 `--experimental_downloader_config` Bazel 选择指向您的文件 . 例如,如果您创建 `.bazel_downloader_config` 你可能会增加你的 `.bazelrc` 文件 :

```
common --experimental_downloader_config=.bazel_downloader_config
```

**摄影师**

#### npm 仓库

安装 @ bazel/ esbuild 软件包的仓库名称 由 npm install 或 纱线 install.

#### 名称

目前未使用

默认为 `""`

#### npm 参数

要传递到 npm 安装规则的额外参数

默认为 `[]`

#### 宽度

npm install 规则的额外命名参数

## 常见问题

### @bazel/esbuild 是什么？

bazel 的规则构建

### 如何安装 @bazel/esbuild？

在项目目录运行 npm install @bazel/esbuild，或使用 pnpm add / yarn add / bun add。

### @bazel/esbuild 支持 TypeScript 吗？

该包的 package\.json 没有声明类型入口。需要类型提示时，可以在 npm 上查找社区维护的 @types/bazel\_\_esbuild 是否存在。

### @bazel/esbuild 可以商用吗？

@bazel/esbuild 使用 Apache-2\.0 许可。宽松许可：允许商业使用、修改和再分发，并附带明确的专利授权；分发时需保留许可与 NOTICE 文件，修改过的文件要注明改动。以上为概括，不构成法律意见，请以许可原文为准。

### @bazel/esbuild 的下载量有多少？

根据 npm 官方下载统计，@bazel/esbuild 在 2026/10/08 – 2026/11/06 这 30 天内被下载 58,685 次，日均约 1,956 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入，适合横向比较热度，不能直接等同于使用人数。

### @bazel/esbuild 还在维护吗？

最新版本 5\.8\.1 发布于 2023/02/17（3 年前）；至今共发布 52 个版本，其中过去 12 个月发布了 0 个；首次发布于 2021/02/13。发布频率只是参考信号：功能稳定的工具可能很少需要更新，建议结合源码仓库的 issue 和提交记录判断。

