Betterer四种运行模式详解start、ci、precommit与watch完全指南含husky钩子集成【免费下载链接】bettererbetterer makes it easier to make incremental improvements to your codebase项目地址: https://gitcode.com/gh_mirrors/be/bettererBetterer 是一款帮助团队对代码库进行渐进式改进的代码质量检查工具。通过betterer/cli提供命令行能力它的核心是四种运行模式start一次性运行、watch实时监听、**precommit提交前拦截**与ci流水线严格校验。本指南带你快速搞懂每种模式的适用场景、常用选项以及如何用 husky 钩子把 Betterer 无缝接入 Git 提交流程。 一张表看懂四种运行模式怎么选在动手之前先用这张对比表建立整体认知避免模式选错模式命令典型场景结果变差时结果文件行为startbetterer start或直接betterer本地手动跑一次提交前自查报错退出 ❌变好则自动更新 ✅watchbetterer watch边改代码边看问题被消灭实时报告退出时统一更新退出时写入新结果 ✅precommitbetterer precommitGit 提交前钩子自动拦截暂存退出码为 1阻止提交有变更则自动git addcibetterer ciCI 服务器、流水线只要结果与预期有任何差异即报错只读校验不修改文件 记忆口诀本地用 start/watch提交用 precommit云端用 ci。 start 模式本地一次性运行最常用start是默认模式——当你直接运行betterer而没指定子命令时就会走 start。它会运行所有测试、将新结果与.betterer.results结果文件对比并报告状态结果变好→ 自动更新结果文件 ✅结果变差→ 直接报错 ❌首次运行→ 自动生成结果文件还可以直接传入文件路径或 glob 只检查部分文件例如# 只检查 src 下所有 JS 文件 betterer src/**/*.js # 排除特定文件正则 betterer src/**/*.js --exclude excluded.js⚠️ 注意指定具体文件时Betterer 只会运行 File Tests针对单个文件的测试。高频 start 选项速查选项作用--cache只运行有变更的文件大幅提速-f/--filter用正则筛选要运行的测试-r/--results指定结果文件路径默认.betterer.results-u/--update即使变差也强制更新结果文件--workers控制并发 worker 数-d/--debug开启调试日志所有模式通用CLI 命令注册逻辑见 packages/cli/src/cli.tsstart 命令实现位于 packages/cli/src/start.ts。 watch 模式文件一变测试立刻跟上当你准备集中修复一批问题比如清理所有any类型时watch 模式是最佳拍档betterer watch会持续监听文件变化每保存一次文件就自动运行相关测试并实时报告状态。交互快捷键按q退出退出时结果文件会被更新 ✅按f动态修改测试过滤器按i动态修改文件忽略规则# 监听时忽略所有 CSS 文件 betterer watch --ignore **/*.css 当前 watch 模式只会运行 File Tests这是官方文档明确说明的行为详见 website/docs/running-betterer.md。监听器核心实现位于 packages/betterer/src/runner/watcher.ts。️ precommit 模式提交前拦截 husky 钩子集成precommit 模式专为 Git 钩子设计逻辑非常智能见 packages/cli/src/precommit.ts运行测试对比结果结果文件有变更→ Betterer 自动将其git add进暂存区随提交一起入库结果变差或测试失败→ 退出码置为 1阻止本次提交❌husky 集成步骤第 1 步确认package.json中有 betterer 脚本betterer init初始化后会自动加上并用 husky 注册钩子npm install -D husky npx husky init第 2 步在项目根目录创建钩子文件.husky/pre-commit# .husky/pre-commit npx betterer precommit第 3 步正常git commit即可。Betterer 会在提交前自动运行变差直接拦截变好则自动把.betterer.results的更新暂存进同一次提交——无需任何手动操作。 官方工作流建议搭配 lint-staged 只检查暂存文件速度更快参考 website/docs/workflow.md。⚙️ ci 模式流水线上的零容忍守门员在 CI 服务器上请一定使用betterer ci而不是start。区别在于start允许变好并自动更新结果文件ci则要求新结果与结果文件完全一致只要有任何差异变好、变差都算就报错退出 ❌实现见 packages/cli/src/ci.ts。这保证了仓库里的.betterer.results始终真实反映代码库状态——如果有人忘了提交更新的结果文件CI 会立刻暴露出来。# 流水线示例把 Betterer 加入构建步骤 - run: npx betterer ci 小技巧CI 环境自动识别CItrue环境变量见 packages/cli/src/cli.ts可配合--cache选项只对变更文件运行以节省时间。 最佳实践工作流四种模式串成一条线把四种模式组合起来就是一条完整的渐进式改进流水线写代码时→betterer watch实时反馈修一个少一个提交前→ husky 钩子自动执行betterer precommit拦截劣化评审/构建时→ 流水线运行betterer ci严格校验偶尔手动→ 终端里betterer start快速自查。同时记得把.betterer.results提交进版本库——把它当作 Jest 快照文件一样对待每次变更都值得 review。若两个分支同时改了结果文件产生冲突运行betterer merge即可自动解决。❓ 常见问题Q结果文件冲突了怎么办运行betterer mergeBetterer 会帮你自动解决结果文件的合并冲突。Q如何只运行某个测试用--filter传入正则如betterer -f typescript。Q运行太慢加--cache开启变更文件缓存或调低--workers并发数。延伸阅读运行模式完整文档website/docs/running-betterer.md官方推荐工作流website/docs/workflow.md结果文件与合并说明website/docs/results-file.md缓存机制website/docs/caching.md【免费下载链接】bettererbetterer makes it easier to make incremental improvements to your codebase项目地址: https://gitcode.com/gh_mirrors/be/betterer创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考