关于 bun
bun 是面向使用 Bun 的开发者的技能,涵盖运行时、包管理器、测试运行器、打包器及 Node.js 兼容性,并指导检查、迁移与验证。
主要功能
- 01检查 Bun 环境与项目配置
- 02指导运行时和包管理流程
- 03涵盖测试、构建与 Node.js 兼容性
- 04建议针对性验证命令
适用场景
- 01在现有项目中采用 Bun
- 02将安装和脚本迁移到 Bun
- 03排查 Bun 版本或锁文件变更
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ dobroslavradosavljevic/ skills --skill bun安装后在 Claude Code 中输入/bun确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
agents/openai.yamlreferences/node-compat-config.mdpackage-manager.mdruntime-apis.mdsource-map.mdtest-bundler-build.mdusage-guide.md详细介绍
Bun
当工作涉及 Bun 运行时、包管理器、测试运行器、打包器、bunfig.toml、Node 兼容性,或迁移到 Bun 的安装/脚本时,请使用此技能。
快照:[email protected]、@types/[email protected] / [email protected](采集于 2026-09-18,已于 2026-10-01 重新验证——仍为最新稳定版)。若版本不同,请从 source-map.md 刷新。
工作流
- 检查本地 Bun 环境:
bun --version/bun --revision(稳定版系列为 1.4.x;API 相关任务优先使用bun upgrade升级到 1.4.2)。- 锁文件:
bun.lock(文本格式;lockfileVersion为 2,或带嵌套/版本范围覆盖项的 3)与旧版bun.lockb。 package.json脚本、工作区、目录、覆盖项、trustedDependencies、可选的nativeDependencies/ignoreScripts/selfContained。bunfig.toml(项目级及可选的全局配置)、.npmrc、@types/bun,以及 TypeScript 6/7 的"types": ["bun"]。- 代码使用的是 Bun 原生 API(
Bun.serve、Bun.Image、bun:sqlite……)还是 Node API(node:*)。
- 日常操作指南、渐进式采用和故障排查,请先参阅 usage-guide.md。
- 当版本有变化,或任务涉及 Redis/SQL/HTTP2/HTTP3/FFI、锁文件/链接器/
globalStore,或从 1.3 升级到 1.4 时,请更新文档。从 source-map.md 开始。 - 深入了解相关细节:
- 运行时 API、HTTP、文件、shell、Image/WebView/markdown/cron、SQLite/Redis/S3/SQL:runtime-apis.md。
- 安装、锁文件、工作区、信任、bunx、CI、audit/dedupe/prune:package-manager.md。
bun test、bun build、--compile、init/create:test-bundler-build.md。- Node 26 兼容性、全局变量、watch/hot、bunfig、1.3→1.4 破坏性变更:node-compat-config.md。
- 新建 Bun 项目时,优先使用 Bun 原生 API 和
bun/bunx命令。如果代码库已采用 Node 风格且运行正常,则保留 Node API。 - 使用范围最小且有用的
bun命令验证(bun test、bun run、bun ci,或针对性的Bun.serve冒烟测试)。
核心判断
- Bun 将 运行时 + 包管理器 + 测试运行器 + 打包器 集成在一个二进制文件中——它不只是“速度更快的 Node”。1.4 是用 Rust 重写的版本,标准库也更丰富(Image、WebView、markdown、cron、Terminal、XML/JSON5/JSONL)。
- 在 Bun 项目的命令中,优先使用
bun/bunx,而非npm/npx/yarn/pnpm。 - 提交
bun.lock。CI 安装命令:bun ci(使用冻结锁文件)。 - 依赖的生命周期脚本默认会被阻止,除非已获信任——添加原生包(如
sharp)后,请检查bun pm untrusted。 - 新工作区的锁文件默认使用 isolated 链接器(
configVersion: 1);旧版锁文件仍使用 hoisted。全局虚拟存储为可选项([install] globalStore = true),且仅适用于 isolated。 - 新建 HTTP 服务时优先使用
Bun.serve;注意默认的空闲超时时间为 10s(SSE 需要server.timeout(req, 0))。HTTP/2(http2: true)和 HTTP/3(http3: true)仍为实验性功能。 - 使用 Bun 优先的代码时,优先选择
bun:sqlite/Bun.SQL/Bun.redis/Bun.Image,而非较重的 Node 客户端。 bun --watch会硬重启;bun --hot会软重载(globalThis会保留)——适合服务器。- Bun 标志必须放在
run之前:使用bun --watch run dev,而非bun run dev --watch。 Bun.env是启动时的快照;值会在运行时变化时,优先使用process.env。bun build不会进行类型检查,也不会生成.d.ts——类型重要时请运行tsc。- 在 1.4 中,
bun:ffi已成为引擎原生功能(cstring是普通字符串)。对生产关键型 FFI,优先使用 Node-API 原生模块。 - 从 1.3 升级到 1.4:Bun 报告的版本为 Node.js 26(
process.versions.modules为 147);bunfig.toml中的字符串必须加引号。完整列表:node-compat-config.md。
验证
优先使用仓库自带的命令。对于有意义的 Bun 工作,覆盖相关子集:
- 运行
bun --version,并确认锁文件 / 链接器 /globalStore的预期。 - 运行针对性
bun test(路径或-t模式);如果 CI 需要,则使用--parallel/ 覆盖率 / junit。 - 修改锁文件后运行
bun ci或bun install --frozen-lockfile。 - 使用
bun run <entry>进行冒烟测试,或通过port: 0+fetch测试Bun.serve。 - 添加原生依赖后:按需运行
bun pm untrusted/ 信任依赖。 - 运行
bun build/--compile后:在目标平台运行生成的输出。 - Node 兼容性迁移:在 Bun 下运行同一套测试,并注明尚未完全支持的模块。
- 从 1.3 升级到 1.4 后:为
NODE_MODULE_VERSION147 重新构建原生扩展;使用带引号的bunfig.toml;不得使用res.writeHeader()。
报告运行了哪些检查、未运行哪些检查,以及仍有哪些 Bun 版本假设。
评论
支持 Markdown