Bun 项目技能
指令优先级:当用户明确约束与更高优先级的系统或开发者指令优先于本技能。用户缩小范围、禁止外部工具、要求仅聊天输出或给出冲突流程时,应按其要求调整,并简要说明任何有意义的偏差。
目标 帮助智能体在任何 Bun 项目中做出 Bun 相关技术决策。本技能聚焦 Bun 本身:核心特性、API、实用注意事项与官方文档。
Bun 是一个可执行文件(bun),融合了运行时、包管理器、脚本运行器、测试运行器、打包器、HTTP 服务器运行时以及工具/CLI 基础。
核心心智模型: Bun = 标准 Web API + Bun 原生 API + Node/npm 兼容性
项目中的首要检查 确认是否使用 Bun:bun.lock、bunfig.toml、package.json#packageManager、使用 bun 的脚本、从 bun:* 导入、Bun.* API 或 bun:test。 当行为重要时检查版本:bun --version,必要时可用 bun --revision。 在 Bun 项目中优先使用 Bun 原生命令: 安装:bun install 运行文件/脚本:bun run <file-or-script> 或 bun <file> 测试:bun test 类型检查:bunx tsc --noEmit(Bun 转译 TS,但不做类型检查) 构建:bun build ... 或 Bun.build()
当任务涉及 Bun 功能、API 或 CLI 选项时,主动查阅官方 Bun 文档:https://bun.com/docs。这样做是为了在上下文中学习该功能、验证当前行为,并发现更新或不熟悉的 Bun 能力。实现层面的细节不要依赖假设或固有知识。
需要记住的核心特性 运行时:直接运行 JS/TS/TSX;支持 Web API(fetch、Request、Response、流、Blob、URL、crypto)以及许多 Node API。 包管理器:bun install、bun add、bun remove、bun update、bunx、bun.lock、workspaces、catalogs、锁文件/CI/安全特性。 TypeScript:内置转译;类型检查需单独使用 TypeScript。 环境/配置:.env* 加载、bunfig.toml、预加载脚本、watch/hot/debug 模式。 测试运行器:bun:test、mock/spy、快照、覆盖率、watch、过滤器、报告器。 打包器:bun build、Bun.build、加载器、CSS、HTML 导入、全栈构建、独立 HTML、可执行文件构建、字节码、插件。 核心 API:Bun.file、Bun.write、流、二进制数据、Bun.$、Bun.spawn、Bun.Glob、bun:sqlite、Bun.sql、fetch。 服务器:Bun.serve、标准 Web Request/Response、原生路由、静态/文件响应、cookie、CSRF、WebSocket、SSE、生命周期方法。 CLI/工具:shebang、import.meta.main、Bun.argv、stdin/stdout/stderr、退出码、shell 自动化、子进程、cron、可执行文件构建。 高级/按需 API:Redis、S3、密码/哈希/密钥、DNS/TCP/UDP、Workers、WebView、JSONL、Markdown、Image、HTMLRewriter、TOML/YAML/JSON5、FFI、转译器、插件。
官方文档优先规则 对于 Bun 特定实现细节,在修改代码或给出精确指导前,主动查阅官方文档。以下情况为强制要求: 使用 Bun API、bun:* 模块、CLI 标志、bunfig.toml、包管理器特性、测试运行器特性、打包器选项或服务器/路由特性时; 行为可能取决于 Bun 版本、平台、目标或运行时模式时; 该特性可能是新增、高级或不熟悉时; 将 Node/npm 代码迁移到 Bun,或调试 Bun/Node 兼容性时。 查阅文档不仅用于确认,也用于发现:浏览附近文档章节以识别智能体可能不知道的相关 Bun 原生特性。
实用规则 优先 Web API,其次用 Bun 原生 API 填补服务器/工具链缺口,再用 Node API 处理兼容性或已有包。 不要假设 Node 行为完全相同;迁移与边界情况需测试。 Bun.file() 是惰性的;通过 .text()、.json()、.bytes() 或 .stream() 读取。 Bun.write() 可写入字符串、字节、blob、流、文件和响应。 使用 Bun.$ 进行简洁的 shell 风格自动化;需要进程控制、流式处理、环境、cwd、stdin/stdout 处理或退出状态详情时使用 Bun.spawn()。 解析前始终检查 fetch() 响应(res.ok)。 在 Bun 服务器中,路由优先级很重要;原生路由对版本敏感,需查阅当前文档与已安装的 Bun 版本。 对于 CLI,使用 import.meta.main,清晰区分 stdout/stderr,尽量使用 process.exitCode 而非突然退出。 对于安全主题,优先使用内置功能(Bun.password、Bun.CSRF、cookie 辅助函数),但需查阅当前文档,避免自创安全设计。
聚焦参考 只加载任务所需的参考: references/REFERENCE.md —— 参考索引与主题路由。 references/runtime-package-test-build.md —— 运行时、TS、环境/配置、包管理器、测试、打包器。 references/core-apis.md —— 文件 I/O、流、fetch、shell、spawn、SQLite、SQL、glob。 references/servers.md —— Bun.serve、路由、静态文件、cookie、CSRF、WebSocket、SSE。 references/clis.md —— CLI 与自动化模式。 references/advanced-apis.md —— Redis、S3、安全、网络、内容处理、原生互操作。