时间就象海绵里的水一样,只要你愿意挤,总还是有的。——鲁迅
Bun 全面上手:Zig 打造的全能 JavaScript/TypeScript 工具链,一行命令跑起你的全栈应用
仓库地址:oven-sh/bun
官方文档与指南:bun.com/docs
简介:Bun 是一个“一体化”的 JavaScript/TypeScript 应用工具链,单一可执行文件bun即可同时充当运行时、包管理器、测试运行器与打包器,目标是成为 Node.js 的“即可替换”运行时。
为什么是 Bun?
来自官方 README 的定义:
- Bun 是一个全能(all-in-one)工具集,单一可执行文件
bun。 - 核心是一个高速运行时,以 Zig 编写,底层由 JavaScriptCore 驱动。
- 设计目标:在尽可能多的场景下,直接替换 Node.js 使用。
- 开箱支持 TypeScript 与 JSX;内置测试、脚本运行和Node 兼容的包管理器。
一句话概括:有了 Bun,你可以更少的依赖、更短的启动链路、更快的开发/运行体验,把“常见的 Node.js 生态工作”统一进一条命令。
安装与升级
Bun 支持 Linux(x64/arm64)、macOS(x64/Apple Silicon)与 Windows(x64)。官方推荐使用安装脚本:
1 | |
升级到最新稳定版:
1 | |
升级到最新 canary(每次主分支提交都会生成 canary):
1 | |
Linux 用户建议内核版本 ≥ 5.6(最低 5.1);x64 CPU 如遇“非法指令”等,请参考文档的 CPU 要求。
Bun 到底能做什么?
官方 README 概述了四个核心能力:
- 运行时(Runtime):直接跑 TS/JS/JSX,内置大量 Web/Node 兼容 API
- 包管理器(Package Manager):
bun install/add/remove/update等全套指令 - 测试运行器(Test Runner):
bun test支持快照、Mock、覆盖率等常见能力 - 打包器(Bundler):
Bun.build提供打包、插件、HMR、单文件可执行等特性
这意味着你可以将“开发、测试、打包、部署”完整流程压缩到 Bun 一套工具里完成。
快速开始:一行命令跑起来
Bun 的 CLI 非常简单直观:
1 | |
代码案例 1:最简 HTTP 服务
Bun 提供了原生的 HTTP 服务 API Bun.serve。以下是一个最小可用示例:
1 | |
运行它:
1 | |
文档中还涵盖了 TLS 配置、热重载、集群与流式响应等更深入的玩法,参见“HTTP Guides”。
代码案例 2:内置测试(bun:test)
Bun 自带测试运行器,支持快照、Mock、覆盖率、DOM 测试等常用特性。示例:
1 | |
运行测试:
1 | |
可配合 watch、生命周期钩子、报告器等高级能力,具体见“Test runner”文档。
代码案例 3:打包(Bun.build)
Bun 的打包器内置于运行时,提供 Loader、插件、宏、HMR、CSS/HTML 支持等。以下是一个最简单的打包示例:
1 | |
运行:
1 | |
你也可以结合插件与宏进行更复杂的构建流程;文档提供了与 esbuild 的对比与迁移建议。
代码案例 4:“$ Shell”在 Bun 中的用法
Bun 扩展了一个优雅的“命令调用”能力($ Shell),可用模板字符串调用系统命令,适合编写自动化脚本:
1 | |
包管理与工作区(Workspaces)
Bun 内置了完整的包管理器指令与功能:
- 常用 CLI:
bun install/add/remove/update/link/unlink/outdated/publish等 - 工作区(Workspaces)与锁文件(Lockfile)
- 支持 registry 配置与覆盖、生命周期脚本、过滤安装(Filter)
- 与 npm/yarn 生态兼容,支持
bun pm与.npmrc
示例(安装依赖并运行脚本):
1 | |
Docker 与部署
官方提供了 Docker 镜像与相关指南,方便将 Bun 应用打包到容器中:
1 | |
文档中有与 Render、systemd、PM2 的结合方式,以及多种前端框架(React/Next.js/SvelteKit/Nuxt/Astro 等)的实践指南。
与 Node.js 的兼容性
README 明确指出 Bun 旨在成为 Node.js 的即可替换运行时,并在文档中列出了 Node.js 兼容性说明与 API 对应关系。
常见 Node API(如 fs、path、Buffer 等)的基础能力在 Bun 中可直接使用,同时也提供了许多 Bun 特有的扩展(如 Bun.file、Bun.Transpiler、bun:sqlite、Bun.sql、Bun.redis 等)。
迁移建议:从
bun run、bun install等基础命令开始,将测试迁移到bun test,再逐步替换打包链路为Bun.build,最终考虑全面切换运行时。
常用入口与文档目录
为便于进一步学习与查阅,官方 README 给出了清晰的目录与链接(节选):
- Quickstart / 安装 / TypeScript / JSX
- CLI(
bun init、bun create、bun upgrade) - Runtime(加载器、环境变量、插件、热重载、Module 解析、auto-install、bunfig.toml、调试)
- Package Manager(安装/更新/发布、缓存、工作区、生命周期脚本、锁文件、registry)
- Bundler(
Bun.build、Loader、插件、宏、HMR、单文件可执行、CSS/HTML) - Test Runner(写测试、快照、Mock、覆盖率、Reporter、DOM 测试、配置)
- API(
Bun.serve、WebSocket、Workers、文件与流、SQLite/Postgres/Redis/S3、TCP/UDP 等) - Guides(覆盖二进制/HTTP/生态/安装/运行时/流/测试/工具等各类场景)
完整入口请访问:bun.com/docs
总结
Bun 把“写、测、打、跑”四件事合在一个工具里,并以极佳的开发体验和启动速度让前后端工程师获益:
- 更短的冷启动与更少的依赖
- 开箱支持 TypeScript 与 JSX
- 统一的 CLI、测试、打包与包管理
- Node.js 兼容性 + 大量 Bun 原生 API 与扩展能力
如果你正在寻找“更快更简洁”的 JavaScript/TypeScript 工作流,或准备为团队减少工具链碎片化,Bun 值得你马上试一试。
现在就开始:
- 安装:
curl -fsSL https://bun.com/install | bash- 运行:
bun run index.tsx、bun test- 文档:bun.com/docs
把复杂留给工具,把时间留给产品与创意。Bun,会让你的全栈开发更轻松。