问题描述
我们有一个运行有 husky 的前端 webpack 驱动项目(因为我们使用 lerna,所以准确地说是 yorkie)。我们有大量的单元测试套件,因此我们希望改进预提交钩子,以便在仅更改非代码文件时不运行测试,例如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"