Bun 介绍 作者:马育民 • 2026-10-14 18:44 • 阅读:10000 # 介绍 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` ```ts const server = Bun.serve({ port: 3000, fetch(req) { return new Response("Hello Bun!"); }, }); console.log(`Listening on [http://localhost](http://localhost):${server.port}`); ``` 运行: ```bash bun index.ts ``` ### 2. 包管理器(替代 npm/yarn/pnpm) `bun install`:安装依赖速度远快于 npm/pnpm,硬链接+缓存机制。 ```bash 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、代码压缩,打包前端/库: ```bash bun build ./src/index.ts --outdir ./dist # 编译成独立可执行文件 bun build ./index.ts --compile --out myapp ``` ### 4. Test runner 测试运行器(替代 Jest/Vitest) `bun test`,开箱即用,语法类似 Jest,速度更快,支持 TS: ```ts // math.test.ts import { expect, test } from "bun:test"; test("1+1=2", () => { expect(1+1).toBe(2); }) ``` ```bash 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,前端圈非常知名工具。 原文出处:/show_1GW4E9JBCotR.html