可在 Git 提交前用 husky + jest 覆盖率阈值检查中止低覆盖率提交:1. 安装 husky、jest 及 jest-junit;2. 配置 test:coverage 脚本并设 global 语句/分支/函数/行覆盖率≥80%;3. 修改 .husky/pre-commit 执行该脚本;4. 支持 git commit --no-verify 临时跳过。

在 JavaScript 项目中,可以用 husky + jest + jest-junit(或 jest-coverage)配合自定义脚本,在 Git 提交前检查测试覆盖率,低于阈值时中止提交。
1. 安装 husky 和相关依赖
确保已安装 husky、jest(或你用的测试框架),以及可选的 jest-junit(用于生成覆盖率报告):
npm install --save-dev husky jest
启用 husky(v8+ 推荐方式):
npx husky-init && npm install
这会创建 .husky/pre-commit 钩子文件,并在 package.json 中添加准备脚本。
立即学习“Java免费学习笔记(深入)”;
2. 配置 Jest 覆盖率检查脚本
在 package.json 的 scripts 中添加一个带覆盖率阈值的命令,例如要求 语句覆盖率 ≥ 80%:
批量替换指定目录下所有 Git 仓库的远程地址(remote URL)。 当用户需要将 Git 仓库从一个服务器迁移到另一个服务器时使用。 触发词:git remote 替换、git url 批量修改、git 仓库迁移、更换 git 地址、批量修改 remote url。
"scripts": {
"test:coverage": "jest --coverage --coverage-threshold='{\"global\":{\"statements\":80,\"branches\":80,\"functions\":80,\"lines\":80}}'"
}注意:--coverage-threshold 是 Jest 内置功能,失败时自动退出非零码,husky 会据此拦截提交。
3. 修改 pre-commit 钩子执行覆盖率检查
编辑 .husky/pre-commit 文件,替换为:
#!/usr/bin/env sh . "$(dirname -- "$0")/_/husky.sh" <p>npm test:coverage
这样每次 git commit 时都会运行覆盖率检查。若未达阈值,Jest 报错并退出,husky 就不会继续提交。
4. 可选:跳过覆盖率检查(临时绕过)
开发调试时可用 --no-verify 跳过钩子:
git commit -m "WIP: skip coverage" --no-verify
也建议在 package.json 中加个快捷命令方便本地快速跑:
"scripts": {
"check:coverage": "npm run test:coverage"
}不复杂但容易忽略的是:确保 jest.config.js 或 package.json#jest 中没有禁用 collectCoverage;另外,首次提交前最好先手动运行一次 npm run test:coverage 确认阈值配置生效。

















