有条件运行git勾搭哈士奇

Conditionally running git hooks with husky

我们有一个前端 webpack 支持的项目 运行ning 有 husky(准确地说是 yorkie,因为我们使用 lerna)。我们有大量的单元测试套件,因此我们想改进预提交挂钩,以便在仅更改非代码文件时不 运行 测试,例如config.json 或 README.md。有人知道现成的解决方案吗,还是我们必须编写自己的 shell 脚本来检查 git 状态?感谢链接、模式或最佳实践建议。

由于找不到现成的解决方案,我们就这样解决了:

# check-files.sh

code_files_count=`git --no-pager diff --name-only --cached |
grep -E "packages\/(?:package1|package2)\/.+\.(?:js|ts|vue|scss|html)$" |
wc -l`
        
if [ $code_files_count == 0 ]
then
    exit 0
fi
        
exit 1

然后在package.json

"precommit": "./check-files.sh || npm run test:unit"