关于 Bun
Bun 是一个现代 JavaScript 运行时,集成了包管理、模块打包和测试执行功能。通过统一的命令行界面,开发者可以用单一工具完成项目的依赖安装、代码运行和测试验证。
主要功能
- 01使用 bun install 快速安装项目依赖
- 02使用 bun run 直接执行 TypeScript 和 JavaScript 文件
- 03使用 bun test 运行和调试测试套件
适用场景
- 01搭建和运行现代 JavaScript 应用,减少工具链复杂度
- 02编码 Agent 需要快速原型设计和执行脚本时
- 03在 CI/CD 工作流中集成完整的构建和测试流程
安装
选择你的系统或包管理器,复制命令到终端运行。
安装完成后运行bun --version确认安装成功。
命令示例
常用命令按使用顺序排列。
详细介绍
Bun
阅读文档 →
Bun 是什么?
Bun 是适用于 JavaScript 和 TypeScript 应用的一体化工具包。它以名为 bun 的单个可执行文件形式发布。
其核心是 Bun 运行时,这是一个快速的 JavaScript 运行时,旨在直接替代 Node.js。它使用 Rust 编写,底层由 JavaScriptCore 驱动,大幅缩短启动时间并降低内存使用量。
bun run index.tsx # TS and JSX supported out-of-the-box
bun 命令行工具还实现了测试运行器、脚本运行器和兼容 Node.js 的包管理器。开发时,你不必使用 1,000 个 node_modules,只需使用 bun 即可。Bun 内置的工具比现有方案快得多,而且只需很少或无需改动,就能在现有 Node.js 项目中使用。
bun test # run tests
bun run start # run the `start` script in `package.json`
bun install <pkg> # install a package
bunx cowsay 'Hello, world!' # execute a package
安装
Bun 支持 Linux(x64 和 arm64)、macOS(x64 和 Apple Silicon)以及 Windows(x64 和 arm64)。
Linux 用户 — 强烈建议使用 5.6 或更高版本的内核,最低版本为 5.1。
x64 用户 — 如果看到“非法指令”或类似错误,请查看我们的 CPU 要求
# with install script (recommended)
curl -fsSL https://bun.com/install | bash
# on windows
powershell -c "irm bun.sh/install.ps1 | iex"
# with npm
npm install -g bun
# with Homebrew
brew tap oven-sh/bun
brew install bun
# with Docker
docker pull oven/bun
docker run --rm --init --ulimit memlock=-1:-1 oven/bun
升级
要将 Bun 升级到最新版本,请运行:
bun upgrade
Bun 会在每次提交到 main 时自动发布一个 canary 构建版本。要升级到最新的 canary 构建版本,请运行:
bun upgrade --canary
快速链接
-
简介
-
模板
-
运行时
-
包管理器
-
打包器
-
编译器
-
测试运行器
-
包运行器
-
API
- HTTP 服务端(
Bun.serve) - HTTP 路由
- HTTP 错误处理
- HTTP 指标
- WebSockets
- Workers
- 二进制数据
- 流
- 文件 I/O(
Bun.file) - 归档(tar)
- SQLite(
bun:sqlite) - PostgreSQL(
Bun.sql) - Redis(
Bun.redis) - S3 客户端(
Bun.s3) - FileSystemRouter
- TCP 套接字
- UDP 套接字
- 全局对象
- 子进程(spawn)
- Cron(
Bun.cron) - WebView
- 转译器(
Bun.Transpiler) - 哈希
- 颜色(
Bun.color) - 控制台
- FFI(
bun:ffi) - C 编译器(
bun:fficc) - HTMLRewriter
- Cookie(
Bun.Cookie) - CSRF(
Bun.CSRF) - 密钥(
Bun.secrets) - YAML(
Bun.YAML) - TOML(
Bun.TOML) - JSON5
- JSONL
- Markdown
- 图像处理
- 实用工具
- Node-API
- Glob(
Bun.Glob) - Semver(
Bun.semver) - DNS
- fetch API 扩展
- HTTP 服务端(
指南
-
部署
-
二进制
- 将 Blob 转换为字符串
- 将 Buffer 转换为 Blob
- 将 Blob 转换为 DataView
- 将 Buffer 转换为字符串
- 将 Blob 转换为 ReadableStream
- 将 Blob 转换为 Uint8Array
- 将 DataView 转换为字符串
- 将 Uint8Array 转换为 Blob
- 将 Blob 转换为 ArrayBuffer
- 将 ArrayBuffer 转换为 Blob
- 将 Buffer 转换为 Uint8Array
- 将 Uint8Array 转换为 Buffer
- 将 Uint8Array 转换为字符串
- 将 Buffer 转换为 ArrayBuffer
- 将 ArrayBuffer 转换为 Buffer
- 将 ArrayBuffer 转换为字符串
- 将 Uint8Array 转换为 DataView
- 将 Buffer 转换为 ReadableStream
- 将 Uint8Array 转换为 ArrayBuffer
- 将 ArrayBuffer 转换为 Uint8Array
- 将 ArrayBuffer 转换为数字数组
- 将 Uint8Array 转换为 ReadableStream
-
生态系统
- 使用 React 和 JSX
- 在 Bun 中使用 Gel
- 在 Bun 中使用 Prisma
- 在 Bun 中使用 Prisma Postgres
- 将 Sentry 添加到 Bun 应用
- 创建 Discord 机器人
- 使用 PM2 将 Bun 作为守护进程运行
- 在 Bun 中使用 Drizzle ORM
- 在 Bun 中使用 Upstash Redis
- 使用 Nuxt 和 Bun 构建应用
- 使用 Qwik 和 Bun 构建应用
- 使用 Astro 和 Bun 构建应用
- 使用 Remix 和 Bun 构建应用
- 使用 Vite 和 Bun 构建前端
- 使用 Next.js 和 Bun 构建应用
- 使用 systemd 将 Bun 作为守护进程运行
- 使用 Hono 和 Bun 构建 HTTP 服务
- 使用 SvelteKit 和 Bun 构建应用
- 使用 SolidStart 和 Bun 构建应用
- 使用 TanStack Start 和 Bun 构建应用
- 使用 Elysia 和 Bun 构建 HTTP 服务
- 使用 StricJS 和 Bun 构建 HTTP 服务
- 使用 Docker 将 Bun 应用容器化
- 使用 Express 和 Bun 构建 HTTP 服务
- 通过 Drizzle ORM 使用 Neon Postgres
- 对 React 组件进行服务端渲染(SSR)
- 使用 Mongoose 和 Bun 读写 MongoDB 数据
- 在 Bun 中使用 Neon's Serverless Postgres
-
HTMLRewriter
-
HTTP
-
安装
- 添加依赖项
- 添加 Git 依赖项
- 添加对等依赖项
- 添加受信任的依赖项
- 添加开发依赖项
- 添加 tarball 依赖项
- 添加可选依赖项
- 生成兼容 yarn 的锁文件
- 使用 workspaces 配置 monorepo
- 以不同名称安装包
- 在 GitHub Actions 中使用 Bun 安装依赖项
- 使用 bun install 和 Artifactory
- 配置 git 以比较 Bun 的 lockb 锁文件
- 为 bun install 覆盖默认 npm 注册表
- 使用 bun install 和 Azure Artifacts npm 注册表
- 从 npm install 迁移到 bun install
- 使用 bun install 为组织作用域配置私有注册表
-
进程
-
读取文件
-
运行时
-
流
- 将 ReadableStream 转换为 JSON
- 将 ReadableStream 转换为 Blob
- 将 ReadableStream 转换为 Buffer
- 将 ReadableStream 转换为字符串
- 将 ReadableStream 转换为 Uint8Array
- 将 ReadableStream 转换为分块数组
- 将 Node.js Readable 转换为 JSON
- 将 ReadableStream 转换为 ArrayBuffer
- 将 Node.js Readable 转换为 Blob
- 将 Node.js Readable 转换为字符串
- 将 Node.js Readable 转换为 Uint8Array
- 将 Node.js Readable 转换为 ArrayBuffer
-
测试
- 在
bun test中监视方法 - 使用 Bun 测试运行器提前终止
- 在
bun test中模拟函数 - 使用 Bun 以监视模式运行测试
- 在
bun test中使用快照测试 - 使用 Bun 测试运行器跳过测试
- 在 Bun 中使用 Testing Library
- 在
bun test中更新快照 - 使用 Bun 测试运行器运行测试
- 在 Bun 测试运行器中设置系统时间
- 使用 Bun 测试运行器设置单项测试超时时间
- 从 Jest 迁移到 Bun 测试运行器
- 使用 Bun 和 happy-dom 编写浏览器 DOM 测试
- 使用 Bun 测试运行器将测试标记为“todo”
- 使用 Bun 测试运行器多次重新运行测试
- 使用 Bun 测试运行器生成代码覆盖率报告
- 使用 bun test 导入、要求并测试 Svelte 组件
- 使用 Bun 测试运行器设置代码覆盖率阈值
- 使用 glob 模式有选择地并发运行测试
- 在
-
工具
-
WebSocket
-
写入文件
参与贡献
请参阅项目 > 参与贡献指南,开始为 Bun 做贡献。
许可证
请参阅项目 > 许可证页面,了解 Bun 的许可信息。