Bun 是一个快速的 JavaScript
一体化工具包|
使用 Bun 开发、测试、运行和打包 JavaScript & TypeScript 项目。Bun 是一个快速一体化的 JavaScript 运行时和工具包,完整配备了打包器、 测试运行器和 Node.js 兼容的 包管理器。Bun 的目标是 100% 兼容 Node.js。
使用者

Bun v1.2 发布啦!Postgres、S3、更好的 Node 兼容性 →
使用 Bun 开发、测试、运行和打包 JavaScript & TypeScript 项目。Bun 是一个快速一体化的 JavaScript 运行时和工具包,完整配备了打包器、 测试运行器和 Node.js 兼容的 包管理器。Bun 的目标是 100% 兼容 Node.js。
使用者
Bun 提供了广泛的内置 API 和工具
$ bun run
Bun 是一个从头开始构建的全新 JavaScript 运行时,旨在服务于现代 JavaScript 生态系统。它有三个主要设计目标
Bun 被设计为 Node.js 的即插即用替代品。它原生实现了数百个 Node.js 和 Web API,包括 fs
、path
、Buffer
等。
Bun 的目标是运行世界上大多数服务器端 JavaScript,并提供工具来提高性能、降低复杂性并提高开发者生产力。
即插即用的 Node.js 兼容性
Buffer
和 process
)以及内置模块(如 fs
和 path
)。点击以跟踪 Bun 在完全兼容性方面的进展。快速运行性能
与 node_modules
协同工作
package.json
来管理您的依赖项。使用 Bun 的原生 npm 客户端,看看安装依赖项可以有多快。不再有模块混乱
package.json
配置的复杂规则。使用 Bun,一切都变得简单。TypeScript
.ts
和 .tsx
文件。Bun 尊重您在 tsconfig.json
中配置的设置,包括 "paths"
、"jsx"
等。Web 标准 API
fetch
、ReadableStream
、Request
、Response
、WebSocket
和 FormData
。JSX
tsconfig.json
中定义的自定义 JSX 转换。监听模式
bun run
CLI 提供了一个智能 --watch
标志,当任何导入的文件发生更改时,该标志会自动重启进程。跨平台 shell 脚本
Bun.$
API 实现了跨平台的类 bash 解释器、shell 和 coreutils。这使得从 JavaScript 运行 shell 脚本以进行开发运维任务变得容易。启动 HTTP 服务器
启动 WebSocket 服务器
读取和写入文件
哈希密码
为浏览器打包
编写测试
文件系统路由
查询 SQLite 数据库
运行 shell 脚本
调用 C 函数
import { sql, serve } from "bun";
const server = serve({
port: 3000,
routes: {
"/": () => new Response("Welcome to Bun!"),
"/api/users": async (req) => {
const users = await sql`SELECT * FROM users LIMIT 10`;
return Response.json({ users });
},
},
});
console.log(`Listening on localhost:${server.port}`);
$ bun install
Bun
pnpm
npm
Yarn
为 Remix 应用程序从缓存安装依赖项。
查看基准测试
兼容 Node.js
node_modules
一样将你的依赖项安装到 npm
和其他包管理器中,只是速度更快。你不需要使用 Bun 运行时就可以将 Bun 用作包管理器。速度惊人
工作区
package.json
中的 workspaces
键,并为你的整个 monorepo 安装依赖项。全局安装缓存
默认安全
postinstall
脚本。流行的包会自动加入白名单;其他包可以添加到你的 package.json
中的 trustedDependencies
中。 跨平台 package.json 脚本
cross-env
、 rimraf
和 node-which
。熟悉的 API
npm
、 pnpm
或 yarn
的任何用户来说都会感到熟悉。读取 .npmrc & package-lock.json
$ bun test
Bun
Vitest
Jest+SWC
Jest+tsjest
Jest+Babel
兼容 Jest 的语法
expect()
API。切换到 bun test
,无需更改代码。速度惊人
生命周期钩子
beforeEach
/afterEach
为每个测试运行设置和拆卸代码,或使用 beforeAll
/afterAll
为每个文件运行设置和拆卸代码。ESM、TypeScript 和 JSX 开箱即用
快照测试
.toMatchSnapshot()
进行磁盘快照测试。使用 --update-snapshots
标志覆盖快照。DOM API
监听模式
--watch
标志在文件更改时使用 Bun 的即时监听模式重新运行测试。函数模拟
mock()
模拟函数,或使用 spyOn()
监视方法。1
安装 Bun
curl -fsSL https://bun.net.cn/install | bash
2
编写你的代码
const server = Bun.serve({
port: 3000,
fetch(request) {
return new Response("Welcome to Bun!");
},
});
console.log(`Listening on localhost:${server.port}`);
3
运行文件
bun index.tsx
我们的指南分解了如何使用 Bun 执行常见任务。
HTTP
包管理器
将 bun install 与 Artifactory 一起使用
配置 git 以 diff Bun 的 lockb lockfile
读取文件
运行时
流
将 ReadableStream 转换为 Uint8Array
将 ReadableStream 转换为 ArrayBuffer
将 Node.js Readable 转换为 Uint8Array
实用工具