husky pre-commit钩子未触发。

5
我遇到了一个关于 husky 的问题。我希望 husky 在 git commit 即将完成的时候运行 eslintprettier,以便执行代码检查。我已经设置好了 eslintprettier 并进行了集成。手动使用时它们都能正常工作。然而,如果违反了 eslint 中的某个规则,husky 仍然允许提交。
此外,我还将本地项目中的 .git/hooks 目录下的 pre-commit.sample 文件重命名为 pre-commit
这是我的 package.json 文件:
  "scripts": {
    "prettier-format": "prettier --config .prettierrc 'src/**/*.ts' 'test/**/*.ts' --write",
    "lint": "eslint . --ext .ts"
  },
  "husky": {
    "hooks": {
      "pre-commit": "npm run prettier-format && npm run lint"
    }
  },
  "devDependencies": {
    "husky": "^7.0.1"
  }

请问这里可能出了什么问题?非常感谢。

2个回答

6

我认为如果要在 husky v7 中使用这个,你需要将想要在 pre-commit 运行的内容移到一个名为 .husky/pre-commit 的文件中。 husky v7 不会使用来自你的 package.json 的配置。 请参见此处有关从 v4 升级到 v7 的信息


你好,我会检查这个并让你知道结果。非常感谢。 - sage
非常感谢@Rin的回答。然而,很多事情发生了变化,我没有在转向其他项目之前完成husky的设置。最近,我不得不在一个Javascript项目上工作,在那里我完成了项目设置,并且必须再次这样做。我找到了另一种我认为更容易的方法,不需要添加我想要运行的命令到.husky/pre-commit中。我使用了lint-staged。我将在下面详细描述这种方法。 :) - sage

3

我发现了一种更简单的方法,无需自己启动husky的安装。

我安装了lint-staged,并通过运行以下命令测试了由它设置的husky pre-commit钩子:

npx mrm@2 lint-staged
yarn install


第一行安装lint-staged和husky,并在目标package.json文件中添加正确的部分和示例脚本供您使用或修改。
将目标package.json暂存并提交到git(本地git即可)。进行更改,应该导致eslint发现错误并使提交失败。尝试再次提交以测试lint-staged设置。 这次,lint-staged应该阻止文件被提交。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接