Bun 基础与核心命令
Bun 是用 Zig 编写的 JavaScript 运行时,内置包管理(bun install)、打包(bun build)、测试(bun test)等,并持续兼容 Node.js API。见 运行时对比。
一、核心特点
| 特性 | 说明 |
|---|---|
| 一体化工具链 | 运行时 + 安装 + 构建 + 测试 |
| JavaScriptCore | 使用 WebKit 的 JS 引擎(非 V8) |
| Node 兼容 | 常用 fs、http、buffer 等 API;具体以官方兼容表为准 |
| TypeScript | 可直接运行 .ts 文件 |
Bun.serve | 内置 HTTP 服务端 API |
二、安装
curl -fsSL https://bun.sh/install | bash
bun --version
其他安装方式见 Bun 安装文档。
升级:bun upgrade。
三、最小 HTTP 示例
Bun.serve({
port: 3000,
fetch(req) {
return new Response("Hello Bun!");
},
});
bun run server.ts
更完整的 HTTP 服务器写法(路由、Cookie、HTML 热重载等)见 HTTP 服务器。
四、核心命令速查表
| 命令 | 用途说明 | 示例 |
|---|---|---|
bun init | 在当前目录初始化一个新的 Bun 项目,生成 package.json 和 tsconfig.json | bun init |
bun run <file> | 运行一个 JavaScript/TypeScript 文件。bun run dev 会运行 package.json 中的 dev 脚本 | bun run index.ts |
bun add <pkg> | 安装一个 npm 包并将其添加到 dependencies | bun add express |
bun add -d <pkg> | 安装一个开发依赖包并添加到 devDependencies | bun add -d @types/node |
bun install | 根据 package.json 安装所有依赖,并生成锁文件(Bun 1.2+ 默认 bun.lock) | bun 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.json和tsconfig.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.serve | HTTP API |
| Node.js 兼容 | API 列表 |
相关文章
HTTP 服务器
Bun 内置了高性能的 HTTP 服务器,通过 Bun.serve 可以轻松启动服务。从 Bun v1.2.3 开始,推荐使用 routes 对象来定义路由,更加直观和灵活。
生产环境与部署指南
Bun 内置了高性能的打包器(bundler),可以对前端或全栈应用进行生产优化。
后端入门概览
本目录覆盖 JavaScript/TypeScript 服务端运行时与框架、数据存储,以及 Rust 系统编程入门,提供从零到部署的完整学习路径。前置建议:JavaScript 基础、工程化 · 环境变量。
数据存储导读
本目录覆盖关系型数据库 MySQL 与内存数据库 Redis,从概念、安装到数据操作、性能优化、备份与缓存实践,面向后端开发与运维入门。与 NestJS 数据库、后端入门 等应用层文档配合阅读。
Redis 入门:概念、安装与数据类型
从「是什么/为什么用」到 Docker/本机安装、基本 CLI,再到五大基础类型命令、持久化与过期键机制、与 MySQL 的选型对比,以及常见踩坑,全面梳理 Redis 入门知识。
Docker Compose 编排
Docker Compose 是定义和运行多容器 Docker 应用的工具,通过一个 compose.yml 文件即可管理 Web、数据库、缓存等多个服务。本文覆盖安装、完整字段说明、多服务示例、常用指令与常见排错。
Series
bun
1 / 3