把 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,用法细节见 bunx
  • bun run 完整命令教程(跑文件传参 / 跑 scripts / flags)见 bun-run
  • 脚本内的 Bun.* 全局 API(文件/Shell/serve/sqlite 等)见 bun-apis

踩坑点

  • 部分依赖 node: 前缀的模块有兼容差异
  • Windows 支持尚不成熟(2025 年持续改进中)
  • bun.lockb 无法与 package-lock.json / yarn.lock 共存,需统一