如何使用 Bun:安装 uv 同级流程 bun init、bun add、bun run 与 npm 对照
官方安装 Bun,init/add/run 走通第一条 dev 脚本,并对照 npm。
第一次在仓库里用 Bun,常见卡点不是「会不会 JavaScript」,而是装完不知道 bun init、bun add 和 bun run 各管哪一段,以及它和 npm / Node 怎么对照。按官方安装脚本装好 Bun,初始化项目、加依赖、跑 package.json 脚本,再试直接跑 TypeScript 文件。
检索词是 如何使用 Bun:安装、bun init、bun add、跑脚本与 npm 对照。下文对照 bun.sh/docs 的安装、项目管理与 CLI。Bun 是独立运行时与工具链,版本与命令以你本机 bun --version 与文档为准。Python 侧类似工作流见站内 uv 与 pip/venv 对照;更早的 Bun 入门见 Bun 安装与 TypeScript。要对齐脚本输出,用 wbroom 开短会,见 如何创建与加入房间。
Bun 在仓库里做什么
Bun 由 Oven 维护,提供 JavaScript/TypeScript 运行时、包管理器(类似 npm/yarn/pnpm)和测试/打包等工具。日常开发里你多半会用到:bun init 生成 package.json,bun add 安装依赖并写入 lockfile,bun run <script> 执行 package.json 的 scripts,以及 bun run file.ts 直接执行入口文件而未必先编译。
安装 Bun
- 1
macOS / Linux 官方脚本
在终端执行文档中的安装命令(常见为
curl -fsSL https://bun.sh/install | bash,以bun.sh/docs/installation当前说明为准)。安装完成后重开终端或按提示加载 shell 配置。 - 2
验证版本
运行
bun --version与which bun,确认 PATH 指向官方安装位置。Windows 用户按文档使用 PowerShell 或 WSL 路径。 - 3
与 mise / nvm 并存
若用 mise 管理 Node,决定「此仓库用 Bun 还是 Node」并在 README 写清;避免 CI 与本地默认运行时不一致。
bun init:创建或接入项目
- 1
空目录初始化
在目标文件夹运行
bun init,按交互选择模板(空白、React 等,选项以 CLI 为准)。会生成package.json,可能包含tsconfig.json与示例文件。 - 2
已有 npm 仓库
若已有
package.json,通常不必再 init;直接bun install根据 lockfile 或 package 安装依赖(Bun 会生成/使用bun.lock,行为见官方文档)。 - 3
第一条 scripts
在
package.json的scripts里加"dev": "bun run src/index.ts"或框架默认命令,便于下一步bun run dev验证。
bun add:安装依赖
- 1
生产依赖
bun add lodash类似npm install lodash,写入dependencies并更新 lockfile。加开发依赖用bun add -d typescript(标志以文档为准)。 - 2
一次性安装
克隆仓库后先
bun install,再开发;CI 里同样用bun install --frozen-lockfile或文档推荐的 frozen 标志。 - 3
与 npm 混用注意
同一仓库长期只维护一种 lockfile 策略;若从 npm 迁移,按 bun.sh 迁移指南处理
package-lock.json与bun.lock,避免双锁不同步。
bun run:脚本与直接执行
- 1
跑 package.json scripts
bun run dev对应npm run dev;bun run build、bun test等同理。部分内置命令可省略run(如bun test),以当前 CLI 帮助为准。 - 2
直接跑 TypeScript
bun run src/index.ts或文档中的bun src/index.ts形式,可在无单独 tsc 步骤下试通入口;生产构建仍可能用bun build或框架工具。 - 3
环境变量与参数
与 npm 类似,可在 scripts 里写
PORT=3000 bun run dev或使用.env(加载规则见 Bun 文档)。
# First hour · Bun · 2026-10-20
curl -fsSL https://bun.sh/install | bash # confirm on bun.sh/docs
bun --version
mkdir my-app && cd my-app && bun init
bun add -d typescript
# package.json → "dev": "bun run src/index.ts"
bun run devBun 与 npm / Node 对照
| 目标 | npm / Node 习惯 | Bun |
|---|---|---|
| 装 CLI 工具 | npm i -g pkg | bun add -g pkg(见文档) |
| 加依赖 | npm install pkg | bun add pkg |
| 装全仓库 | npm ci / npm install | bun install |
| 跑脚本 | npm run dev | bun run dev |
| 跑 TS 文件 | 常需 ts-node / 先 tsc | 常可直接 bun run file.ts |
命令找不到
重载 shell;检查 ~/.bun/bin 是否在 PATH;勿与损坏的旧安装并存。
依赖装失败
核对 Node 原生模块是否支持当前 Bun 版本;必要时该包仍用 Node LTS 跑。
CI 与本地不一致
提交 bun.lock;CI 固定 Bun 版本;文档写清 bun install 步骤。
建议路径:bun.sh 官方安装 →
bun init或bun install→bun add→bun run dev。细节以 bun.sh/docs 与你本机bun --help为准。
- 和站内另一篇 Bun 文的区别
- 较早文章偏安装与 TypeScript 初跑;本篇强调 init / add / run scripts 与 npm 对照。
- 和 uv 的关系
- uv 管 Python 项目;Bun 管 JS/TS。见 uv 对照。
- 不是 wbroom 功能说明
- 只讲 Bun CLI;远程白板会议见 wbroom。
还想核对的问题
Bun 能完全替代 Node 吗?
许多项目可以,但部分原生模块或框架仍要求特定 Node 版本。生产部署前用官方兼容说明与你的测试套件验证。
必须删掉 package-lock.json 吗?
长期用 Bun 应统一 lockfile 策略;迁移步骤见 bun.sh 文档,勿让 npm 与 Bun 各改各的锁文件。
bun add 和 bun install 区别?
bun add 添加/升级指定包并写 manifest;bun install 按现有 manifest 与 lock 装全量依赖。
第一个小时必须写测试吗?
不必。先 bun run dev 跑通一条 script;稳定后再加 bun test(若模板已带测试脚本)。