writing-bundler-tests
指导如何使用 itBundled 与 expectBundled 编写 Bun bundler 测试,以验证转译、压缩及代码转换的正确性。
简介
本技能为测试 Bun 内部打包器 (bundler)、转译器 (transpiler) 与代码转换逻辑提供了完整的框架。专为参与 Bun 运行时开发并需确保代码打包过程(包括压缩、摇树优化 tree-shaking 与模块解析)在 ESM、CJS 与 IIFE 等格式下正确运行的开发者所设计。通过使用 itBundled 工具,开发者能系统性地对构建输出、运行时行为及错误处理进行断言,无需额外架设基础设施。
-
协助验证复杂的打包功能,例如无用代码消除 (DCE)、压缩(空白、标识符、语法)以及如页眉/页脚注入等高级代码操作。
-
支持精确的运行时断言,包括 stdout/stderr 模式匹配、环境变量注入与退出代码验证,确保打包输出在 Bun 或 Node.js 环境中符合预期行为。
-
允许对打包错误与警告进行细致的验证,让测试人员能够定义特定文件路径下的预期诊断输出。
-
提供打包后的检查机制,利用 API 钩子 (onAfterBundle) 检查文件存在性、通过快照验证内容有效性,以及以程序化方式验证转换结果。
-
具备强大的捕捉机制以进行精确的转译验证,允许用户在原始文件中嵌入 capture() 调用,以验证中间值或逻辑流。
-
测试的主要入口点为 test/bundler/ 目录,并使用 expectBundled.ts 辅助工具。
-
输入配置涉及在 itBundled 测试声明中定义虚拟文件结构、入口点与特定的打包器标志(如 target、format、sourceMap、splitting)。
-
测试文件依类别组织,例如 banner、minify、cjs 或 splitting,可通过 BUN_BUNDLER_TEST_FILTER 等筛选器进行高效导航与执行。
-
预期输出匹配包含字符串字面量、正则表达式或详细结构验证用的快照测试。
-
务必使用 dedent 辅助工具以维持测试文件内多行字符串内容的可读性,确保测试代码格式正确。
仓库统计
- Star 数
- 89,434
- Fork 数
- 4,372
- Open Issue 数
- 6,661
- 主要语言
- Zig
- 默认分支
- main
- 同步状态
- 空闲
- 最近同步时间
- 2026年4月29日 13:07