用途:Bun 是集运行时、包管理器、打包器与测试运行器于一体的 JavaScript/TypeScript 工具链。适合新建 JS/TS 项目、对安装与运行速度敏感的脚本、使用 Bun 运行时的 Vercel 部署,以及希望统一工具链(运行、安装、测试、构建)的场景;需要最大生态兼容性、旧工具链依赖 Node,或某依赖已知存在 Bun 问题时,宜继续用 Node。
主要能力:其运行时为基于 JavaScriptCore 的 Node 兼容运行时;自 Bun 1.4 起运行时以 Rust 实现(由 Zig 迁移而来)。并非 100% 兼容 Node,部分原生插件、较少见的 node: 内部 API 及依赖 Node 内部实现的包可能失败,生产使用前需验证。包管理器默认锁文件为 bun.lock(文本),旧版本使用二进制的 bun.lockb,Bun 仍可读取该格式用于迁移。内置打包器与转译器,以及 API 类似 Jest 的 bun test。
使用方式:先以 bun --version 确认版本,文中指引针对 Bun 1.4.x,CLI 标志可能随版本变化。用 bun install 安装依赖、bun add/remove/update 管理依赖,bun outdated 查看过期依赖,bun pm ls 查看依赖与解析版本(--all 含传递依赖),bun audit 查询注册表公告,bun dedupe 与 bun prune 分别去重和移除未用包。迁移时把 node script.js 换成 bun run script.js 或 bun script.js,用 bun run 执行 npm 脚本,bun x 做一次性运行。
Vercel:在 vercel.json 设 bunVersion: "1.4.x",构建用 bun run build 或 bun build ./src/index.ts --outdir=dist,安装用 bun install --frozen-lockfile。
限制:bun pm ls 不是对已安装文件内容的完整性校验;bun audit 不修改 package.json、bun.lock 或 node_modules,范围注册表缺少公告端点的包会被跳过且不影响退出码;bun audit fix 属修改性安装操作,会改变锁文件与已安装包并可能运行生命周期脚本。测试方面 --isolate 只创建新的 JavaScript 全局,并非进程或安全沙箱。建议提交 bun.lock 以保证可复现安装。