问题描述
我在我的 lerna monorepo 项目中使用 husky,该项目有多个目录(项目)
.husky
front
├── package.json
app
└── package.json
挂机 prepush
我使用 yarn test
在 front/ 和 app/ 上启动我的测试。
我希望只有当里面的代码发生变化时才对文件夹(项目)进行测试。就像 github Actions 一样。
on:
paths:
- 'front/**'
哈士奇有办法吗?
解决方法
我发现了一个黑客
- 我得到了所有提交中的所有文件更改
- 我检查我的文件夹
- 并根据上下文触发命令
// ~/.husky/pre-push
#!/bin/sh
. "$(dirname $0)/_/husky.sh"
declare IS_APP_FOLDER_CHANGE=$(git show --name-only -r --stat --oneline HEAD^^..HEAD | grep 'app/')
echo "IS_APP_FOLDER_CHANGE --> + $IS_APP_FOLDER_CHANGE"
if [[ $IS_APP_FOLDER_CHANGE ]]; then cd app && yarn test --watchAll=false && cd ..; fi