解决工程化里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 功能

如果项目是新项目建议在项目跟目录配置,如果是老项目重新组合,且各个子项目用的配置不一样,可以参考下面的方式处理:

  1. 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
  1. husky V9
    package.json
{
  "script": {
    "prepare": "cd ../../ && husky apps/front-desk/.husky",
  }
}

重新运行prepare 命令

.husky/pre-commit

# 使用合适的命令
yarn lint-staged
posted @ 2025-07-30 22:51  龙陌  阅读(18)  评论(0)    收藏  举报