SuperAPI AI 工具集

bun

编程与开发

查看项目

更新于 10-16 05:59

技能介绍

Bun

概述

Bun 是一个集 JavaScript/TypeScript 运行时、包管理器、打包器和测试运行器于一体的全能工具,旨在用单个二进制文件替代 Node.js、npm、webpack 和 Jest。它原生支持 TypeScript,内置高性能 HTTP 服务器(Bun.serve())、速度更快的包管理器、打包器,以及兼容 Jest 的测试运行器,性能有显著提升。

用途与主要能力

Bun 覆盖 JavaScript/TypeScript 项目的多个核心环节:

  • HTTP 服务器:使用 Bun.serve() 创建 HTTP 服务器,内置 WebSocket 支持、TLS 和流式响应,可处理每秒 100K+ 请求。
  • 包管理:使用 bun install(资料称比 npm 快 10-30 倍)、bun add、bun remove 管理依赖,并用 bun.lock(文本格式)保证 git diff 可读。
  • 打包:使用 Bun.build() 并指定合适的 target("browser"、"bun"、"node"),通过 splitting: true 启用代码分割,并配置 tree shaking。
  • 测试:使用 bun test,提供兼容 Jest 的 API(describe、it、expect)、快照测试、通过 mock.module() 进行 mock,以及用 --coverage 查看代码覆盖率。
  • 文件 I/O:使用 Bun.file() 和 Bun.write() 替代 Node.js fs 以获得更快的文件操作,并用 Bun.Glob 进行模式匹配。
  • 认证:使用 Bun.password.hash() 和 Bun.password.verify() 处理 bcrypt/argon2,替代相应的 npm 包。
  • 数据库:使用 bun:sqlite 作为内嵌数据库,替代 SQLite 的 npm 包。

使用方式

资料给出的使用要点包括:

  • 创建 HTTP 服务器时使用 Bun.serve() 配合路由处理器;用 request.json() 解析 JSON 请求体并返回 Response 对象;可加入 WebSocket 升级以支持实时功能;用 Bun.password 做认证、用 bun:sqlite 存储数据。
  • 管理包时使用 bun install、bun add、bun remove,并优先使用 bun.lock 文本格式。
  • 打包时使用 Bun.build(),指定 target,启用 splitting: true 并配置 tree shaking。
  • 测试时使用 bun test,兼容 describe、it、expect,支持快照测试和 mock.module(),可用 --coverage 生成覆盖率。
  • 文件操作优先使用 Bun.file() 和 Bun.write(),模式匹配使用 Bun.Glob。
  • 认证使用 Bun.password.hash() 与 Bun.password.verify(),实现零原生依赖。

从 Node.js 迁移

资料说明:将脚本中的 node 替换为 bun,保持 package.json 不变,并注意大多数 npm 包无需修改即可工作;用 bun:sqlite 替代 SQLite npm 包。示例迁移步骤包括:在 CI 和本地用 bun install 替换 npm install;将 package.json 脚本改用 bun run 而非 node;用 Bun 内置的 .env 加载替代 dotenv;将测试运行器从 Jest 切换为 bun test,测试文件保持不变。

适用场景

  • 构建高性能 API 服务器与 REST API,包括需要实时 WebSocket 的场景。
  • 需要更快安装、启动和测试执行的 Node.js 项目迁移。
  • 项目内的依赖管理、代码打包与测试运行。
  • 需要本地嵌入式数据库、内置认证密码哈希或高频文件读写的场景。

限制

资料未提供关于平台支持范围、具体价格或收费模式、与其他运行时的完整兼容性清单等信息,相关内容暂未提供。