如果你最近在折腾前端工程、Node.js 服务或者脚手架工具,大概率已经听过 Bun。
它最吸引人的地方不是“又一个运行时”,而是:
一个二进制,打包了运行时、包管理器、测试框架和构建能力。
但很多人上来就问错问题:
“Bun 会不会彻底替代 Node.js?”
真正该问的是:
在你的项目阶段里,Bun 能不能用更低维护成本换来更快交付速度。
一句话结论先给出:2026 年把 Bun 作为新项目默认工具是合理的,但老项目应该分阶段迁移,不要一把梭。
这篇文章不聊太多概念,直接围绕“能马上用起来”的目标,带你完成:
本文命令基于 Bun 官方文档(检索日期:2026-02-12)。
别先安装,先做决策。下面这张表解决 80% 的现实场景。
| 场景 | 收益(性能/效率) | 代价(迁移/维护) | 建议 |
|---|---|---|---|
| 新项目(Next.js、API、工具脚本) | 冷启动快,依赖安装快,工具链更少 | 团队需适应新命令 | 直接用 Bun |
| 中小型 Node 线上项目 | CI 时间可能明显缩短 | 需验证少量兼容边角 | 先灰度迁移 |
| 历史包袱重的老系统 | 理论收益存在 | 兼容与回归测试成本高 | 暂不全量迁移 |
如果你是独立开发者或小团队,Bun 的收益通常来自两个维度:
在你敲安装命令前,先确认环境避免踩坑。
unzip>= 5.6(5.1 也可运行,但网络性能可能受影响)可以先检查:
uname -rcurl -fsSL https://bun.com/install | bashpowershell -c "irm bun.sh/install.ps1 | iex"如果你更偏好包管理器,也可以用 Homebrew 或 npm 全局安装。
# Homebrew
brew install bun
# npm
npm install -g bun安装完成后,打开一个新终端,执行:
bun --version
bun --revision如果提示 command not found,通常是 PATH 没加载到 Bun 默认目录:
~/.bun/bin把它加入 shell 配置后重开终端即可。
mkdir bun-hello && cd bun-hello
bun init
bun run index.tsbun init 会帮你生成基础项目结构和 package.json。
你也可以直接运行 TS/JS 文件:
bun index.ts这也是很多人第一次感受到 Bun 的地方:不需要额外配置 ts-node,就能直接跑 TypeScript。
下面这部分可以当“速查表”。
bun install等价于你熟悉的 npm install / pnpm install。
在 CI 场景里,如果你希望锁文件严格一致,使用:
bun ci
# 或
bun install --frozen-lockfile# 生产依赖
bun add axios
# 开发依赖
bun add -d typescript
# 删除依赖
bun remove axiosbun run dev
bun run build
bun run start如果你项目原来就有 scripts,大多数情况可以直接复用,不需要改脚本名。
bunx)bunx cowsay "Hello Bun"
bunx create-vite my-appbunx 是 npx 的对应方案,适合一次性命令或脚手架初始化。
先写一个最小示例 sum.test.ts:
import { expect, test } from 'bun:test'
test('1 + 1 = 2', () => {
expect(1 + 1).toBe(2)
})执行测试:
bun test要监听改动可用:
bun test --watchbun build ./src/index.ts --outdir ./dist对于需要快速生成前端/服务端构建产物的小项目,这个命令非常实用。
如果你已经有现成 Node 项目,建议按下面顺序迁移:
package.json 不动。bun install。bun run dev、bun run build、bun run test。bun.lock,在 CI 用 bun ci 保证一致性。这个方式的好处是:改动小、回退快、风险可控。
很多迁移失败不是 Bun 不行,而是迁移方式太激进。
错误动作通常是:
这不是提效,是把风险前置到生产。
package.json 与关键脚本名称。bun install 生成并提交 bun.lock。bun run dev、bun run build、bun run test。bun ci,稳定后再切主线。这样做的底层逻辑很简单:把“兼容性不确定性”关在可回滚范围内。
优先检查 PATH 是否包含 ~/.bun/bin。
Bun 默认不会执行所有第三方依赖生命周期脚本(出于安全考虑)。遇到依赖安装行为差异时,先查该依赖是否需要额外信任配置(trustedDependencies)。
提交 bun.lock,并在流水线使用 bun ci 或 bun install --frozen-lockfile。
如果你今天就要落地,按这个 checklist 执行:
bun init。bun install、bun run dev、bun run build、bun test。bun.lock 纳入版本控制。bun ci 或 bun install --frozen-lockfile。trustedDependencies。如果你是第一次接触 Bun,建议就按这条最短路径走:
bun init 跑通第一个项目;bun install / bun run / bun test / bunx;不用一上来就追求“全面迁移”。
先让 Bun 在你一个真实项目里稳定跑起来,收益会比看十篇对比文章更直接。