测试与维护
测试矩阵
仓库测试分为四类:
根命令 pnpm test 会串行运行 unit、integration 和 e2e。
Rstest 配置
根 rstest.config.ts 定义共享配置:
globals: truetestEnvironment: "node"testTimeout: 60000hookTimeout: 50000restoreMocks: trueoutput.module: true- worker 上限为
80%,给 dts 子进程留资源
它还注册了 replace-loader-url 测试插件,在测试编译 EntryChunkPlugin.ts 时把 loader URL 替换成 .ts,方便源码测试。
各 package 的测试配置:
集成测试结构
tests/integration 下每个目录通常是一个独立 case,包含 index.test.ts、可选 package.json、rslib.config.ts、tsconfig.json 和源码。目录名通常对应被测能力:
维护新能力时,优先新增最小 integration case,因为它能验证真实构建产物。
测试辅助工具
tests/scripts/shared.ts 是集成测试核心辅助:
tests/scripts/helper.ts 提供轮询文件断言、日志等待和 glob 内容读取。E2E 中 tests/scripts/rsbuild.ts 提供随机端口 dev server,避免端口冲突。
常用命令
CI 工作流
.github/workflows 中主要工作流:
修改核心构建行为时,不应只依赖单元测试。需要至少运行相关 integration case,必要时运行 examples 或 ecosystem CI 对应命令。
发布和版本相关
仓库中有 release skill 和 release workflow。发布维护通常涉及:
- 确认包构建产物。
- 确认 changelog 或 changeset。
- 确认
packages/core、packages/plugin-dts、packages/create-rslib的版本和依赖关系。 - 运行测试和 lint。
- 通过
.github/workflows/release.yml或仓库约定流程发布。
具体发布任务应优先使用仓库的 release skill,而不是手动拼命令。
文档维护
文档站位于 website:
website/docs/en和website/docs/zh是用户文档源文件。website/theme是 Rspress 主题和首页组件。website/doc_build是构建产物,通常不要手动修改。
新增用户可见配置项时,应同步:
packages/core/src/types/config.ts类型和注释。- 相关运行时默认值。
- integration tests。
website/docs用户文档。- 本
wiki的维护者说明,如果涉及核心流程或架构。
代码质量约定
仓库采用:
- TypeScript + ESM。
- 单引号。
- Rslint 为 canonical linter。
- Prettier 为 canonical formatter。
- 文件名使用 camelCase 或 PascalCase。
pre-commit hook 由 simple-git-hooks 和 nano-staged 驱动:
- Markdown、CSS、JSON 等运行 Prettier 和 heading-case。
- JS/TS 类文件运行 Rslint type-check 和 Prettier。
维护检查清单
修改核心构建逻辑时建议检查:
- 是否影响所有 format:ESM、CJS、UMD、IIFE、MF。
- 是否影响 bundle 和 bundleless 两条路径。
- 是否影响 node 和 web target。
- 是否影响 JS、CSS、asset、dts 的路径和扩展名一致性。
- 是否影响 watch、inspect 或
--lib裁剪。 - 是否需要更新类型注释、用户文档和 integration tests。
修改 dts 逻辑时建议检查:
- tsc 普通项目。
- composite 或 incremental 项目。
dts.buildproject references。dts.bundleAPI Extractor。dts.isolated。dts.tsgo。- watch 模式和 abortOnError 行为。
修改脚手架时建议检查:
- 模板名、目录名和交互选项一致。
- JS 和 TS 模板都能生成。
- package.json merge 后依赖合理。
- 额外工具条件正确。
- README、AGENTS.md 和 skills 注入符合预期。