避免 Husky 因 monorepo 项目中每个不相关目录的更改而被触发

问题描述

我在我的 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