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

性能

Bun 的打包器在 esbuild 的 three.js 基准测试中比 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 实现了 onStartonEndonResolveonLoad;但未实现 esbuild 的 onDisposeresolve 钩子。initialOptions 已部分实现:它是只读的,并且仅暴露 esbuild 选项的子集。请改用 config(即 Bun 的 BuildConfig 格式中的同一配置)。
myPlugin.ts

onResolve

  • 🟢 filter
  • 🟢 namespace

onLoad

  • 🟢 filter
  • 🟢 namespace