把 Node.js 生态重新整合的高速工具链——运行时、包管理器、打包器、测试框架四合一。基于 JavaScriptCore 引擎,性能显著优于 Node.js。
能力范围
| 功能 | 替代 |
|---|---|
| JS/TS 运行时(兼容 Node) | node |
| 包管理器 | npm / pnpm / yarn |
| 打包器 | tsc / esbuild |
| 测试框架 | jest / vitest |
安装
# macOS / Linux / WSL
curl -fsSL https://bun.sh/install | bash
# Windows(PowerShell)
powershell -c "irm bun.sh/install.ps1 | iex"
# 通过 npm
npm install -g bun
# Docker
docker pull oven/bun
docker run --rm -it oven/bun bun --version常用命令
运行文件 / 脚本
bun run src/index.ts # 直接运行文件
bun run dev # 运行 package.json 中的脚本包管理
bun install # 安装所有依赖,生成 bun.lockb
bun add <package> # 添加依赖
bun add -d <package> # 添加 devDependencies
bun remove <package> # 删除依赖—frozen-lockfile
bun install --frozen-lockfile- 严格按锁文件安装,不修改锁文件
- 若
package.json与锁文件不一致,直接报错退出(而不是静默更新锁文件) - 用于 CI / 生产构建,保证依赖可复现;等价于
npm ci、pnpm install --frozen-lockfile
临时执行工具
bun x tsc # 等价于 npx tsc,但启动更快
bun x eslint .打包
bun build src/index.ts --outdir dist测试
bun test工具边界
- Node.js 兼容性约 95%,绝大多数项目可直接切换
- 锁文件
bun.lockb是二进制格式,不可直接阅读(bun bun --print查看文本) - 适合新项目 / 追求极致启动速度的场景
- 旧项目迁移需测试 native addon 兼容性
bun x有独立别名bunx,用法细节见 bunxbun run完整命令教程(跑文件传参 / 跑 scripts / flags)见 bun-run- 脚本内的
Bun.*全局 API(文件/Shell/serve/sqlite 等)见 bun-apis
踩坑点
- 部分依赖
node:前缀的模块有兼容差异 - Windows 支持尚不成熟(2025 年持续改进中)
bun.lockb无法与package-lock.json/yarn.lock共存,需统一