Skip to main content
Bun 的打包器 API 深受 esbuild 启发。本页面对这两个 API 进行了并列比较。 有一些行为有所不同:
默认进行打包。 与 esbuild 不同,Bun 默认会进行打包;无需使用 --bundle 标志。若要分别转译每个文件, 请使用 Bun.Transpiler。
仅限打包器。 与 esbuild 不同,Bun 的打包器没有内置开发服务器。将其与 Bun.serve 及其他运行时 API 结合使用,即可实现相同的效果。esbuild 的 HTTP 选项不适用。

性能

在 esbuild 的 three.js 基准测试中,Bun 的打包器速度比 esbuild 快 1.75 倍。
从零开始打包 10 份 three.js,启用源码映射和压缩

CLI API

terminal
在 Bun 的 CLI 中,像 --minify 这样的布尔标志不接受参数。像 --outdir <path> 这样需要一个参数的标志,可以写成 --outdir out 或 --outdir=out。某些标志(如 --define)可以重复使用:--define foo=bar --define bar=baz。

JavaScript API

插件 API

Bun 的插件 API 旨在兼容 esbuild。Bun 不支持 esbuild 的全部插件 API,但实现了核心功能。许多第三方 esbuild 插件无需修改即可与 Bun 配合使用。
从长远来看,我们的目标是实现与 esbuild API 的功能对等。如果某些功能无法正常工作,请提交 issue,帮助我们确定优先级。
在 Bun 和 esbuild 中,插件都通过 builder 对象定义。
myPlugin.ts
builder 对象的方法可以挂接到打包流程的各个部分。Bun 实现了 onStart、onEnd、onResolve 和 onLoad;但没有实现 esbuild 的钩子 onDispose 和 resolve。Bun 部分实现了 initialOptions:该对象为只读,仅公开 esbuild 选项的一个子集。请改用 config(Bun 的 BuildConfig 格式中具有相同功能的对象)。
myPlugin.ts

onResolve

  • 🟢 filter
  • 🟢 namespace

onLoad

  • 🟢 filter
  • 🟢 namespace