如何使用 Bun JavaScript 运行时:macOS/Linux 安装、bun init、跑 TypeScript 与 bun install 对比 npm
装好 Bun,用 bun init 与 bun install 跑 TypeScript,比纯 npm toolchain 更轻。
前端脚本、小 API 或 CLI 工具,若每次都要配 ts-node、等 npm 装依赖、再写一层构建,启动成本偏高。Bun 是带 JavaScript/TypeScript 运行时、包管理器、测试与打包的一体化工具链,官方文档在 bun.sh/docs。
搜索 Bun 安装 macOS Linux bun init 运行 TypeScript bun install 对比 npm 的人,通常要完成:在 macOS/Linux 安装 Bun、bun init 建项目、直接跑 .ts 文件、用 bun install 装依赖并理解与 npm 的差异。以下步骤以官方文档为准。
Bun 适合谁
想少配工具链的 JS/TS 开发者
一个二进制同时跑脚本、装包、跑测试;小服务或脚本不必先搭 webpack + ts-node。
从 Node 迁移但保留 npm 生态的人
bun install 读 package.json,多数 npm 包可直接用;锁文件为 bun.lockb(二进制,应用 Git 跟踪)。
本地要快、生产仍用 Node 的团队
开发用 Bun 提速;上线若需 Node LTS,CI 里仍可 npm ci — 团队应在 README 写清「开发 Bun / 生产 Node」或统一运行时。
在 macOS / Linux 安装 Bun
- 1
官方安装脚本(推荐)
在终端执行文档 Installation 中的命令,例如
curl -fsSL https://bun.sh/install | bash。装完后新开终端,运行bun --version。 - 2
macOS:Homebrew
brew tap oven-sh/bun后brew install bun(以 bun.sh 文档当前说明为准)。只保留一种安装路径,避免 PATH 里多个bun。 - 3
Linux / WSL
优先用官方 install 脚本;验证
which bun与bun --version。企业环境若禁止 curl 管道,改用文档列出的包管理器或离线包。 - 4
升级
bun upgrade拉最新稳定版(见 CLI 文档)。升级后若 CI pin 版本,同步更新镜像或 action。
用 bun init 创建项目
- 1
空目录初始化
mkdir my-app && cd my-app,运行bun init。交互式向导可选模板(空白、React 等 — 以 CLI 提示为准)。 - 2
非交互快速开始
bun init -y生成最小package.json与index.ts(选项名以bun init --help为准)。 - 3
确认入口
查看
package.json的module/type与入口文件;后续bun run会读这里的 scripts。
直接运行 TypeScript
Bun 内置 TypeScript/ JSX 转译,多数场景无需单独 tsc 或 ts-node:
# 跑单个文件
bun run index.ts
# 等价于直接执行(常见习惯)
bun index.ts
# package.json scripts
bun run dev若项目依赖 Node 专有 API 或原生模块,先在本地跑一遍测试;不兼容的包仍以 npm 文档与 issue 为准,不要假设 100% 与 Node 行为一致。
bun install 与 npm 对比
| 任务 | npm | Bun |
|---|---|---|
| 安装依赖 | npm install | bun install |
| 加依赖 | npm install pkg | bun add pkg |
| 跑 script | npm run dev | bun run dev |
| 锁文件 | package-lock.json | bun.lockb |
bun install 通常比 npm 更快(并行与缓存策略见官方 Package manager 文档)。已有 package-lock.json 的仓库可以逐步引入 Bun:先在分支试 bun install,确认测试通过再决定是否提交 bun.lockb。
Bun 加速的是本地安装与跑 TS;若 Docker 生产镜像仍用
node:22,请在 Dockerfile 里明确 Node 版本,不要假设 Bun 与 Node 镜像可互换。
远程结对过一遍 package.json 或 CI 配置时,可从 wbroom 首页 开浏览器房间,见 创建与加入房间。
还想核对的问题
Bun 能完全替代 Node 吗?
视项目而定。许多 npm 包在 Bun 下正常,但 Node 原生 addon、部分边缘 API 可能不兼容。用官方 Node compatibility 列表与自家测试套件验证后再切换生产运行时。
可以同时保留 package-lock.json 和 bun.lockb 吗?
技术上可以,但团队应约定单一真相源。混用两种锁文件容易导致 CI 与笔记本不一致。选 Bun 为主就提交 bun.lockb 并在 CI 用 bun install --frozen-lockfile(见文档)。
Windows 怎么办?
本文聚焦 macOS/Linux。Windows 支持以 bun.sh 文档 Installation 当前说明为准(含 WSL 建议)。
和 mise、pnpm 怎么分工?
mise 管多版本 Node/Python;Bun 自带运行时也可被 mise 安装。pnpm 仍是 Node 生态里的高效包管理器 — 若仓库已标准化 pnpm,不必为尝鲜强行改 Bun;新脚本项目更适合先试 Bun。