介绍
Bun 是 Oven-sh 开发、Zig 编写(2026年用rust改写)、基于 JavaScriptCore(Safari JS引擎) 的一体化 JS/TS 工具包,单文件可执行程序,目标作为 Node.js 的快速替代品,把「运行时 + 包管理器 + 打包器 + 测试运行器」全部内置在一起。
作者 Jarred Sumner,2022 发布,当前稳定版 1.x。
底层原理:为什么快
引擎:JavaScriptCore(JSC)
Node.js 使用 V8(Chrome);Bun 使用 WebKit 的 JSC,冷启动速度更优,内存占用更低。系统语言 Zig(2026年用rust改写)
不是 C++/Rust。Zig 直接调用操作系统 syscall(Linux io_uring / macOS kqueue),绕过 libuv,减少 IO 层开销;手动内存管理,GC 压力小。一体化架构
不再需要node + npm + jest + esbuild/webpack一堆工具;所有能力打包进单个bun二进制文件。
四大核心组件
1. Runtime 运行时(替代 node)
- 原生直接运行
.ts / .tsx / jsx,零配置,不需要 tsc、ts-node - 兼容 Node.js 内置模块:
fs/path/http/crypto,大部分 npm 包可直接跑 - 原生支持 Web API:
fetch、WebSocket、Request/Response、Streams - 内置 Bun 专属高性能API:
Bun.serve():原生HTTP服务(性能极高)Bun.file():高性能文件读写Bun.SQLite:内置SQLite数据库Bun.cron:定时任务Bun.password:密码哈希Bun.build():内置打包器- 支持编译脚本为独立单文件二进制(
bun build --compile)
示例:极简 HTTP 服务 index.ts
const server = Bun.serve({
port: 3000,
fetch(req) {
return new Response("Hello Bun!");
},
});
console.log(`Listening on [http://localhost](http://localhost):${server.port}`);
运行:
bun index.ts
2. 包管理器(替代 npm/yarn/pnpm)
bun install:安装依赖速度远快于 npm/pnpm,硬链接+缓存机制。
bun install # 安装 package.json 全部依赖
bun add react # 添加包
bun add -d @types/bun # 开发依赖
bun remove react
bunx cowsay hi # 一次性执行包,等同于 npx
3. Bundler 打包器(替代 esbuild、webpack)
内置打包、Tree-Shaking、代码压缩,打包前端/库:
bun build ./src/index.ts --outdir ./dist
# 编译成独立可执行文件
bun build ./index.ts --compile --out myapp
4. Test runner 测试运行器(替代 Jest/Vitest)
bun test,开箱即用,语法类似 Jest,速度更快,支持 TS:
// math.test.ts
import { expect, test } from "bun:test";
test("1+1=2", () => {
expect(1+1).toBe(2);
})
bun test
Bun vs Node.js 对比
| 项目 | Node.js | Bun |
|---|---|---|
| JS引擎 | V8 | JavaScriptCore |
| 底层语言 | C++ | Zig |
| IO层 | libuv | 直接系统调用 io_uring/kqueue |
| TS支持 | 需要 tsc/ts-node | 原生直跑TS,零配置 |
| 工具链 | 分开:npm、jest、webpack | 全部内置单文件 |
| 启动速度 | 慢(V8初始化开销大) | 冷启动非常快 |
| 包安装 | npm/pnpm 较慢 | bun install 极快 |
| 原生扩展 | 完整支持C++ addon | 部分兼容,C++原生模块容易踩坑 |
优缺点
优点
- 开发体验强:TS/JSX 直接跑,不用配置转译工具
- 速度全面领先:启动、IO、测试、依赖安装、打包都更快
- 单文件分发:
--compile打包成独立二进制,部署简单,不需要目标机器装运行时 - 内置大量常用能力:SQLite、cron、WebSocket、文件API,减少第三方依赖
- Web API 原生支持,前后端写法统一
缺点与局限(选型重点)
- Node.js 兼容不是100%
- 大量C++原生模块(node addon)(部分图像处理、数据库底层驱动)会报错,这是最大坑。纯JS包基本没问题。
- 生态成熟度弱于 Node
Node 几十年生态;Bun 生态还在持续完善,冷门库、部署工具、运维方案少。 - Windows 支持相比 Linux/macOS 弱一点。
- 生产大规模落地案例少于 Node,大型企业老项目迁移成本高。
适合场景 & 不适合场景
✅ 适合
- 新建后端服务(Elysia 框架专为 Bun 打造)
- CLI 工具、脚本自动化、爬虫
- 轻量服务、AI流式接口服务
- 前端工程化打包、单元测试提速
- 需要编译成独立二进制交付的工具
❌ 不适合
- 重度依赖大量 Node C++ 原生插件的老项目
- 稳定核心业务,团队对 Node 生态深度依赖,无时间做兼容测试
业界使用情况
Anthropic
- 产品:Claude Code(AI编程Agent CLI工具)
- 用途:整个Claude Code使用Bun开发,打包成Bun单二进制分发,交付给数百万开发者;Anthropic在2025年底直接收购Bun,把Bun作为AI软件工程基础设施。
- 场景:CLI智能体,大量脚本执行、子进程、文件处理,看重Bun冷启动快、一体化工具链。
Midjourney
- 用途:图片生成任务的WebSocket消息通知服务,基于Bun内置高性能
Bun.serve()WebSocket能力,处理图片生成状态推送、消息背压、消息压缩;不是图片生成AI模型本身,只是通知推送后端服务。
- 用途:图片生成任务的WebSocket消息通知服务,基于Bun内置高性能
Railway
- 云平台产品:Railway Serverless Functions
- 用途:无服务器函数底层运行时,直接跑TS代码,利用Bun毫秒级冷启动,用户部署TS函数不需要构建打包步骤。
Tailwind Labs
- 产品:Tailwind CSS standalone CLI
- 说明:独立版Tailwind命令行工具,用Bun打包成单二进制,用户不需要安装Node即可直接使用Tailwind CLI,前端圈非常知名工具。