Bun 介绍

介绍

Bun 是 Oven-sh 开发、Zig 编写(2026年用rust改写)、基于 JavaScriptCore(Safari JS引擎) 的一体化 JS/TS 工具包,单文件可执行程序,目标作为 Node.js 的快速替代品,把「运行时 + 包管理器 + 打包器 + 测试运行器」全部内置在一起。

作者 Jarred Sumner,2022 发布,当前稳定版 1.x。

底层原理:为什么快

  1. 引擎:JavaScriptCore(JSC)
    Node.js 使用 V8(Chrome);Bun 使用 WebKit 的 JSC,冷启动速度更优,内存占用更低。

  2. 系统语言 Zig(2026年用rust改写)
    不是 C++/Rust。Zig 直接调用操作系统 syscall(Linux io_uring / macOS kqueue),绕过 libuv,减少 IO 层开销;手动内存管理,GC 压力小。

  3. 一体化架构
    不再需要 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++原生模块容易踩坑

优缺点

优点

  1. 开发体验强:TS/JSX 直接跑,不用配置转译工具
  2. 速度全面领先:启动、IO、测试、依赖安装、打包都更快
  3. 单文件分发:--compile 打包成独立二进制,部署简单,不需要目标机器装运行时
  4. 内置大量常用能力:SQLite、cron、WebSocket、文件API,减少第三方依赖
  5. Web API 原生支持,前后端写法统一

缺点与局限(选型重点)

  1. Node.js 兼容不是100%
    • 大量C++原生模块(node addon)(部分图像处理、数据库底层驱动)会报错,这是最大坑。纯JS包基本没问题。
  2. 生态成熟度弱于 Node
    Node 几十年生态;Bun 生态还在持续完善,冷门库、部署工具、运维方案少。
  3. Windows 支持相比 Linux/macOS 弱一点。
  4. 生产大规模落地案例少于 Node,大型企业老项目迁移成本高。

适合场景 & 不适合场景

✅ 适合

  • 新建后端服务(Elysia 框架专为 Bun 打造)
  • CLI 工具、脚本自动化、爬虫
  • 轻量服务、AI流式接口服务
  • 前端工程化打包、单元测试提速
  • 需要编译成独立二进制交付的工具

❌ 不适合

  • 重度依赖大量 Node C++ 原生插件的老项目
  • 稳定核心业务,团队对 Node 生态深度依赖,无时间做兼容测试

业界使用情况

  1. Anthropic

    • 产品:Claude Code(AI编程Agent CLI工具)
    • 用途:整个Claude Code使用Bun开发,打包成Bun单二进制分发,交付给数百万开发者;Anthropic在2025年底直接收购Bun,把Bun作为AI软件工程基础设施。
    • 场景:CLI智能体,大量脚本执行、子进程、文件处理,看重Bun冷启动快、一体化工具链。
  2. Midjourney

    • 用途:图片生成任务的WebSocket消息通知服务,基于Bun内置高性能Bun.serve() WebSocket能力,处理图片生成状态推送、消息背压、消息压缩;不是图片生成AI模型本身,只是通知推送后端服务。
  3. Railway

    • 云平台产品:Railway Serverless Functions
    • 用途:无服务器函数底层运行时,直接跑TS代码,利用Bun毫秒级冷启动,用户部署TS函数不需要构建打包步骤。
  4. Tailwind Labs

    • 产品:Tailwind CSS standalone CLI
    • 说明:独立版Tailwind命令行工具,用Bun打包成单二进制,用户不需要安装Node即可直接使用Tailwind CLI,前端圈非常知名工具。