文档 • 不一致 • 问题 • 路线图
Bun 是一个用于 JavaScript 和 TypeScript 应用程序的一体化工具包。它作为一个名为bun
的可执行文件提供。
其核心是Bun 运行时,这是一个快速的 JavaScript 运行时,旨在替代 Node.js。它是用 Zig 编写的,并由 JavaScriptCore 提供支持,大大减少了启动时间和内存使用量。
Bun run index.tsx # 开箱即用支持 TS 和 JSX
bun
命令行工具还实现了测试运行器、脚本运行器和 Node.js 兼容的包管理器。您只需要bun
即可进行开发,而不需要 1,000 个 node_modules 。 Bun 的内置工具比现有选项要快得多,并且可以在现有 Node.js 项目中使用,几乎不需要任何更改。
Bun test # 运行testsbun run start # 运行`package.json`中的`start`脚本bun install <pkg> # 安装packagebunxowsay 'Hello, world!' # 执行一个包
Bun 支持 Linux(x64 和 arm64)、macOS(x64 和 Apple Silicon)和 Windows(x64)。
Linux 用户— 强烈建议使用内核版本 5.6 或更高版本,但最低版本为 5.1。
# 使用安装脚本(推荐)curl -fsSL https://bun.sh/install | bash# 在 windowspowershell 上 -c "irm Bun.sh/install.ps1 | iex"# 使用 npmnpm install -g Bun# 使用 Homebrewbrew tap oliver-sh/bun 与 Docker 一起brew安装bun#docker拉烤箱/bun docker run --rm --init --ulimit memlock=-1:-1 烤箱/面包
要升级到最新版本的 Bun,请运行:
包子升级
Bun 在每次提交到main
时自动发布金丝雀构建。要升级到最新的金丝雀版本,请运行:
包子升级--金丝雀
查看金丝雀构建
简介
什么是包子?
安装
快速入门
打字稿
模板化
bun init
bun create
运行时
bun run
文件类型
打字稿
JSX
环境变量
面包 API
网络 API
Node.js 兼容性
单文件可执行文件
插件
观看模式
模块分辨率
自动安装
Bunfig.toml
调试器
框架API
包管理器
bun install
bun add
bun remove
bun update
bun link
bun pm
全局缓存
工作空间
生命周期脚本
筛选
锁文件
范围和登记处
覆盖和解决方案
捆绑器
Bun.build
装载机
插件
宏
与 esbuild
测试跑者
bun test
编写测试
观看模式
生命周期挂钩
模拟
快照
日期和时间
DOM 测试
代码覆盖率
包跑者
bunx
应用程序编程接口
HTTP服务器
WebSockets
工人
二进制数据
流
文件输入/输出
导入元数据
SQLite
文件系统路由器
TCP 套接字
UDP 套接字
全局变量
$ 壳牌
子进程
转译器
散列
安慰
外国金融机构
HTML重写器
测试
实用工具
节点API
全局
森弗
项目
路线图
标杆管理
贡献
建筑窗户
执照
二进制
将 Blob 转换为 DataView
将 Blob 转换为 ReadableStream
将 Blob 转换为字符串
将 Blob 转换为 Uint8Array
将 Blob 转换为 ArrayBuffer
将 Buffer 转换为 blob
将 Buffer 转换为 ReadableStream
将 Buffer 转换为字符串
将 Buffer 转换为 Uint8Array
将 Buffer 转换为 ArrayBuffer
将 DataView 转换为字符串
将 Uint8Array 转换为 Blob
将 Uint8Array 转换为缓冲区
将 Uint8Array 转换为 DataView
将 Uint8Array 转换为 ReadableStream
将 Uint8Array 转换为字符串
将 Uint8Array 转换为 ArrayBuffer
将 ArrayBuffer 转换为 Blob
将 ArrayBuffer 转换为 Buffer
将 ArrayBuffer 转换为字符串
将 ArrayBuffer 转换为 Uint8Array
将 ArrayBuffer 转换为数字数组
生态系统
使用 Vite 和 Bun 构建前端
使用 Astro 和 Bun 构建应用程序
使用 Next.js 和 Bun 构建应用程序
使用 Nuxt 和 Bun 构建应用程序
使用 Qwik 和 Bun 构建应用程序
使用 Remix 和 Bun 构建应用程序
使用 SolidStart 和 Bun 构建应用程序
使用 SvelteKit 和 Bun 构建应用程序
使用 Elysia 和 Bun 构建 HTTP 服务器
使用 Express 和 Bun 构建 HTTP 服务器
使用 Hono 和 Bun 构建 HTTP 服务器
使用 StricJS 和 Bun 构建 HTTP 服务器
使用 Docker 将 Bun 应用程序容器化
创建一个 Discord 机器人
在 Render 上部署 Bun 应用程序
使用 Mongoose 和 Bun 将数据读写到 MongoDB
使用 PM2 将 Bun 作为守护进程运行
使用 systemd 将 Bun 作为守护进程运行
服务器端渲染(SSR)React 组件
将 Drizzle ORM 与 Bun 一起使用
将 EdgeDB 与 Bun 结合使用
将 Neon 的无服务器 Postgres 与 Bun 结合使用
将 Prisma 与 Bun 结合使用
使用 React 和 JSX
将 Sentry 添加到 Bun 应用程序
HTTP协议
常见 HTTP 服务器用法
在 HTTP 服务器上配置 TLS
在 Bun 中使用 unix 域套接字获取
热重载 HTTP 服务器
使用 fetch() 代理 HTTP 请求
使用 fetch 发送 HTTP 请求
启动 HTTP 服务器集群
将文件作为 HTTP 响应进行流式传输
带有异步迭代器的流式 HTTP 服务器
使用 Node.js Streams 传输 HTTP 服务器
使用 FormData 通过 HTTP 上传文件
编写一个简单的HTTP服务器
安装
添加依赖项
添加开发依赖
添加 Git 依赖项
添加对等依赖
添加 tarball 依赖项
添加可信依赖
添加可选依赖项
使用bun install为组织范围配置私有注册表
配置 git 来比较 Bun 的 lockb 锁定文件
使用工作区配置 monorepo
生成人类可读的锁定文件
以不同的名称安装包
在 GitHub Actions 中使用 Bun 安装依赖项
覆盖bun安装的默认npm注册表
将bun install 与Azure Artifacts npm 注册表结合使用
使用带有 Artifactory 的 Bun 安装
过程
获取流程正常运行时间(以纳秒为单位)
监听 CTRL+C
监听操作系统信号
解析命令行参数
从标准输入读取
从子进程读取 stderr
从子进程读取标准输出
生成子进程
生成子进程并使用 IPC 进行通信
读取文件
检查文件是否存在
获取文件的MIME类型
将文件作为 ReadableStream 读取
将文件作为字符串读取
将文件读取到缓冲区
将文件读取到 Uint8Array
将文件读取到 ArrayBuffer
读取 JSON 文件
观察目录的变化
运行时
使用 VS Code 扩展调试 Bun
使用 Web 调试器调试 Bun
定义和替换静态全局变量和常量
导入 JSON 文件
导入 TOML 文件
将 HTML 文件导入为文本
在 GitHub Actions 中安装并运行 Bun
为 Bun 安装 TypeScript 声明
重新映射导入路径
读取环境变量
运行外壳命令
设置时区 在邦
设置环境变量
流
将 Node.js 可读文件转换为 Blob
将 Node.js Readable 转换为字符串
将 Node.js 可读对象转换为 ArrayBuffer
将 Node.js 可读文件转换为 JSON
将 ReadableStream 转换为 Blob
将 ReadableStream 转换为 Buffer
将 ReadableStream 转换为字符串
将 ReadableStream 转换为 Uint8Array
将 ReadableStream 转换为块数组
将 ReadableStream 转换为 ArrayBuffer
将 ReadableStream 转换为 JSON
测试
与 Bun 测试运行者一起提前保释
使用 Bun 测试运行程序生成代码覆盖率报告
使用 Bun 测试运行程序将测试标记为“todo”
从 Jest 迁移到 Bun 的测试运行程序
bun test
中的模拟函数
使用 Bun 测试运行程序多次重新运行测试
使用 Bun 在监视模式下运行测试
使用 Bun 测试运行程序运行测试
使用 Bun 测试运行程序设置代码覆盖率阈值
使用 Bun 测试运行程序设置每次测试超时
在 Bun 的测试运行器中设置系统时间
使用 Bun 测试运行程序跳过测试
监视bun test
中的方法
更新bun test
中的快照
在bun test
中使用快照测试
使用 Bun 和 happy-dom 编写浏览器 DOM 测试
效用
检查当前文件是否是入口点
检查两个对象是否深度相等
使用 DEFLATE 压缩和解压缩数据
使用 gzip 压缩和解压缩数据
将文件 URL 转换为绝对路径
将绝对路径转换为文件 URL
使用 Bun 检测代码何时执行
对 Base64 字符串进行编码和解码
转义 HTML 字符串
获取当前文件的绝对路径
获取当前入口点的绝对路径
获取当前Bun版本
获取当前文件的目录
获取当前文件的文件名
获取可执行bin文件的路径
哈希密码
休眠固定的毫秒数
WebSocket
构建发布订阅 WebSocket 服务器
构建一个简单的 WebSocket 服务器
启用 WebSocket 消息压缩
在 WebSocket 上设置每个套接字上下文数据
写入文件
将内容附加到文件
将文件复制到另一个位置
删除文件
将 Blob 写入文件
增量写入文件
将文件写入标准输出
将 ReadableStream 写入文件
将响应写入文件
将字符串写入文件
写入标准输出
请参阅“项目”>“贡献”指南来开始为 Bun 做出贡献。
有关 Bun 许可的信息,请参阅项目 > 许可页面。