8

我们有一个企业应用程序,其文件夹结构如下:

/项目
  .git
  /sub1
    ...Java 项目
  /sub2
    包.json
    ...Javascript 骨干项目
  /sub3
    ...Java 项目
  /sub4
    ...Java 项目
  /sub5
    包.json
    ...Javascript React 项目

我目前在 sub2 和 sub5 项目中都设置了 Husky,这会导致冲突(每次切换项目时都需要安装 npm)。此外,Java 开发人员报告说,当他们在项目 sub1、sub3 和 sub4 中提交代码时,正在执行 Husky git 挂钩。

如果您在提交时位于某个文件夹中,是否可以只运行挂钩?

4

4 回答 4

7

我遇到了同样的问题。我通过在主目录中安装 husky 来修复它。
我的设置:

/项目
    .git
    包.json
    /前端
        包.json
    /前端管理员
        包.json

/project/package.json

{
  "license": "MIT",
  "version": "0.0.1",
  "private": true,
  "scripts": {
    "frontend": "cd frontend && yarn lint"
    "frontend:admin": "cd frontend-admin && yarn lint",
  },
  "husky": {
    "hooks": {
      "pre-commit": "npm-run-all frontend frontend:admin"
    }
  },
  // In the main folder you should install husky 
  // and npm-run-all to execute multiple commands
  "dependencies": {
    "husky": "^4.3.0",
    "npm-run-all": "^4.1.5"
  }
}

您的子目录应该有一个要执行的 lint 脚本。
当其中一个脚本崩溃时,husky 将给出报告并立即中止。

于 2020-10-09T08:43:47.923 回答
3

如果您在提交时位于某个文件夹中,是否可以只运行挂钩?

不,但是钩子本身可以确定它在运行时所在的目录。这没有正确记录,但GIT_PREFIX在 Git chdir-s 到$GIT_WORK_TREEor$GIT_DIR目录之前的环境中设置。(从 Git 版本 1.7.8 开始就是这种情况。)

于 2018-12-20T16:56:40.100 回答
1

虽然这个问题是几年前的。希望有人会从husky的人们提供的更新答案中受益。

TL;博士

请参阅此处的新指南。

对于那些 w@ntz answ3rz n0wz !

typicode/husky-init README.md中提供的新指南在“您的package.json文件和 .git 目录不在同一级别。例如,project/.git并且project/front/package.json”时建议以下内容

您可以在准备脚本期间更改目录并传递子目录:

// package.json
{
  "scripts": {
    "prepare": "cd .. && husky install front/.husky"
  }
}
于 2022-02-16T19:08:45.370 回答
0

我通过在 /root 目录中安装和运行 husky 解决了同样的问题。(这是必需的,因为 husky 需要与 .git 文件夹位于同一目录中。

npm install husky
npx husky install #use this command to create a .husky folder

搜索“预提交”文件

cd ./frontend && npm run lint && npm run build
cd ..
cd ./backend && npm run lint && npm run test

注意:输入相同的命令以执行每个子目录/项目 谢谢!

于 2021-09-08T18:36:26.650 回答