FORMA

Bun 基础与核心命令

Bun 是用 Zig 编写的 JavaScript 运行时,内置包管理(bun install)、打包(bun build)、测试(bun test)等,并持续兼容 Node.js API。见 运行时对比

一、核心特点

特性说明
一体化工具链运行时 + 安装 + 构建 + 测试
JavaScriptCore使用 WebKit 的 JS 引擎(非 V8)
Node 兼容常用 fshttpbuffer 等 API;具体以官方兼容表为准
TypeScript可直接运行 .ts 文件
Bun.serve内置 HTTP 服务端 API

二、安装

bash
curl -fsSL https://bun.sh/install | bash
bun --version

其他安装方式见 Bun 安装文档

升级:bun upgrade

三、最小 HTTP 示例

typescript
Bun.serve({
  port: 3000,
  fetch(req) {
    return new Response("Hello Bun!");
  },
});
bash
bun run server.ts

更完整的 HTTP 服务器写法(路由、Cookie、HTML 热重载等)见 HTTP 服务器

四、核心命令速查表

命令用途说明示例
bun init在当前目录初始化一个新的 Bun 项目,生成 package.jsontsconfig.jsonbun init
bun run <file>运行一个 JavaScript/TypeScript 文件。bun run dev 会运行 package.json 中的 dev 脚本bun run index.ts
bun add <pkg>安装一个 npm 包并将其添加到 dependenciesbun add express
bun add -d <pkg>安装一个开发依赖包并添加到 devDependenciesbun add -d @types/node
bun install根据 package.json 安装所有依赖,并生成锁文件(Bun 1.2+ 默认 bun.lockbun install
bun remove <pkg>移除一个依赖包bun remove express
bunx <command>临时下载并执行一个 npm 包的命令,用完即删,避免全局污染bunx eslint --fix
bun test运行项目中的测试文件bun test
bun build为浏览器或生产环境打包项目bun build ./index.tsx --outdir ./build
bun upgrade升级 Bun 本身到最新版本bun upgrade

五、包管理功能

Bun 的包管理器不仅是速度的代名词,还提供了许多实用的功能。

  • 初始化项目bun init 会快速创建一个带有 TypeScript 配置的现代项目骨架,自动生成 package.jsontsconfig.json
  • 安装依赖bun install 会创建锁文件,确保依赖版本在团队和 CI 中保持一致。Bun 1.2 起默认生成文本格式的 bun.lock(JSONC,可直接查看 diff),此前版本默认是二进制的 bun.lockb;已有 bun.lockb 的旧项目可通过 bun install --save-text-lockfile --frozen-lockfile --lockfile-only 迁移到新格式。安装速度显著快于 npm install,具体倍数以官方 benchmark 的场景与版本为准。
  • 查看工具bun pm 命令组提供多种包管理工具(完整列表见 官方 bun pm 文档):
    • bun pm bin:查看本地或全局可执行文件路径。
    • bun pm ls:列出已安装依赖及其解析版本(可用 --all 展开传递依赖)。
    • bun why <pkg>:说明某个包为何被安装(依赖链;亦可见文档中的 bun pm why 别名,以当前 CLI --help 为准)。
    • bun pm migrate:从其它包管理器锁文件迁移(见下条)。
  • 迁移项目:已有 package-lock.json / yarn.lock / pnpm-lock.yaml 时,可执行 bun pm migrate(或直接 bun install)生成 Bun 锁文件(当前默认为文本格式 bun.lock);原锁文件会保留,确认无误后再自行删除。若已存在 bun.lock 需覆盖,可加 --force

Bun 的包管理器是所有命令中最亮眼的部分之一,极大提升了依赖安装和管理的效率。

六、使用注意

  • 迁移 Node 项目前:在目标 Bun 版本 下跑通测试与关键依赖(尤其原生 addon)。
  • 性能数据以官方 benchmark 的场景与版本为准,不宜外推为所有 workload。
  • 新项目默认使用文本锁文件 bun.lock(Bun 1.2+),可直接在 PR 中查看 diff;仍在使用旧的二进制 bun.lockb 的项目无法直接查看差异,若需查看依赖树可用 bun pm ls。两种格式均需提交到 Git 以保证团队与 CI 依赖版本一致。
  • CI 中建议使用 bun install --frozen-lockfile,避免锁文件与 package.json 不一致时静默升级依赖。生产部署与容器化方案见 生产环境与部署指南

参考文献

以下链接在编写时均可正常访问:

资料说明
Bun 文档官方
Bun.serveHTTP API
Node.js 兼容API 列表

Series

bun

1 / 3