Jarred Sumner 用 Zig 打造的下一代 JavaScript 运行时——集运行时、包管理、打包、测试于一体,比 Node.js 快 3-5 倍
Node.js 诞生 15 年来,JavaScript 生态的工具链像打补丁一样层层堆叠——node 跑脚本、npm/yarn/pnpm 装包、ts-node/tsx 跑 TS、webpack/Vite 打包、jest/vitest 跑测试、nodemon 看文件变化……每个工具都要单独装、单独配、单独升级。
Bun 的野心是用一个 Zig 写的二进制一次性替代这一切:运行时用 Safari 的 JavaScriptCore(比 V8 冷启动更快),自带的 bun install 比 npm 快 25 倍,bun test 是 Jest API 兼容的测试跑者,bun build 是内置打包器,甚至 bun 自己就能直接跑 .ts/.tsx/.jsx 文件——不用 ts-node。
2024 年 Bun 1.0 发布,2025 年 Bun 2.0 加入 Node.js API 几乎完整兼容;2026 年越来越多生产环境开始用它替代 Node(Discord、ByteDance 已大规模采用)。
本教程 10 章:什么是 Bun、安装与第一次运行、包管理 bun install、跑脚本 bun run、HTTP 服务器 Bun.serve、内置文件/数据库 API、测试 bun test、打包 bun build、FFI 与原生插件、从 Node 迁移到 Bun。
六大特性让 Bun 不只是"更快的 Node"
JSCore + Zig 的组合,冷启动 <10ms,脚本执行、HTTP 吞吐全面超越 Node。
bun install 比 npm 快 25 倍,基于 binlink + 全局缓存,生成 bun.lock(或 bun.lockb 二进制)。
bun test 兼容 Jest API,毫秒启动、自带 mock/snapshot/coverage。
bun build 是内置 bundler,支持 ESM/CJS、sourcemap、minify、tree-shake。
实现 Node.js API 的绝大部分(fs/net/http/stream...)+ npm 生态全兼容。
直接 bun run foo.ts / foo.tsx,无需 ts-node/tsx;SQLite/FFI 内置。
10 章从 hello world 跑起,到生产部署与 FFI 调 C 库全线覆盖
Bun 是什么、与 Node/Deno 的区别、JSCore vs V8、安装(curl/brew/npm)、第一次 hello world。
bun install/add/remove、bun.lock(JSON 文本锁)、workspace、--frozen-lockfile、trustedDependencies。
bun run vs bun、直接跑 .ts/.tsx、package.json scripts、--hot 热重载、--watch、环境变量。
Bun.serve API、WebSocket、路由、Request/Response 标准、TLS、静态路由、性能对标 fastify。
Bun.file、Bun.write、bun:sqlite、bun:redis、Bun.password、Bun.spawn,零依赖开发常见业务。
describe/it/expect、mock/spy、snapshot、coverage、并行执行、和 Jest/Vitest 对照。
bun build 命令 & JS API、targets(browser/bun/node)、code splitting、plugins、outputs。
兼容情况、process/fs/net/http/stream、CommonJS 支持、native 模块、常见坑与调试。
bun:ffi 调 C 库、dlopen、bun build --compile 单文件可执行二进制、跨平台交叉编译。
Docker 官方镜像、--smol 内存模式、hot/cluster 部署、ElysiaJS/Hono 框架、监控与 profiling。