解决工程化里lint-staged+husky在monorepo项目中推送代码时不生效问题
解决工程化里lint-staged+husky在monorepo项目中推送代码时不生效问题
现象:在 multirepo 时 lint-staged+husky 在推送代码时能正常生效,但在multirepo 转 monorepo后,每个子项目里配置的husky + lint-staged 在推送时不生效
原因:multirepo时每个代码仓库的.git文件在每个代码仓库的根目录,但转 monorepo .git统一提到了项目跟目录,每个子仓库里没有.git路径了
解决方案:在子项目package.json里script字段的prepare里切换到切换到根目录然后执行husky命令
整合 husky
lint-staged
功能
如果项目是新项目建议在项目跟目录配置,如果是老项目重新组合,且各个子项目用的配置不一样,可以参考下面的方式处理:
- husky V8
package.json
{
"script": {
"prepare": "cd ../../ && husky install apps/front-desk/.husky",
}
}
重新运行prepare
命令
.husky/pre-commit
#!/usr/bin/env sh
. "$(dirname -- "$0")/_/husky.sh"
# 使用合适的命令
yarn lint-staged
- husky V9
package.json
{
"script": {
"prepare": "cd ../../ && husky apps/front-desk/.husky",
}
}
重新运行prepare
命令
.husky/pre-commit
# 使用合适的命令
yarn lint-staged