哈士奇预提交挂钩未触发
Posted
技术标签:
【中文标题】哈士奇预提交挂钩未触发【英文标题】:husky pre-commit hook not triggering 【发布时间】:2021-10-04 22:36:59 【问题描述】:我遇到了husky
的问题。我希望 husky 在即将完成 git commit 时运行 eslint
并且更漂亮,以便它可以强制执行干净的编码检查。我已经设置了eslint
、prettier
并集成了两者。手动使用时它们工作正常。但是,如果违反了 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"
请问,这可能是什么问题? 非常感谢。
【问题讨论】:
【参考方案1】:我找到了一种更简单的方法来做到这一点,而无需自己开始安装 husky。
我通过运行以下命令安装了 lint-staged 并测试了由它设置的 husky 预提交钩子:
npx mrm@2 lint-staged
yarn install
第一行安装 lint-staged 和 husky 并在目标 package.json 文件中添加带有示例脚本的正确部分供您使用或修改。
暂存并提交目标 package.json 到 git(本地 git 就足够了)。做出应该导致 eslint 发现错误和提交失败的更改。再次尝试提交以测试 lint-staged 设置。 Lint-staged 应该会阻止文件这次被提交。
【讨论】:
【参考方案2】:我认为要使其与husky
v7 一起使用,您需要将要运行预提交的内容移动到一个名为.husky/pre-commit
的文件中。 husky
v7 不会使用您的 package.json
中的配置。见here for upgrading from v4 to v7。
【讨论】:
您好,我会检查一下,让您知道结果。非常感谢 非常感谢@Rin 的回答。但是,发生了很多变化,我没有完成该项目的 husky 设置,然后才开始做其他事情。最近,我不得不在一个 javascript 项目上工作,我在其中进行了项目设置,并且不得不再次这样做。我发现了另一种我认为更简单的方法,它不需要添加我想在.husky/pre-commit
中运行的命令。我使用了 lint-staged。我将在下面详细描述这种方法。 :)以上是关于哈士奇预提交挂钩未触发的主要内容,如果未能解决你的问题,请参考以下文章