Husky v5无法创建Git钩子。

10
我在我的应用程序中安装了Husky v5,并希望在提交时运行lint-staged命令。
我按照入门指南的说明进行操作,但是没有在我的git配置文件中创建.git/hooks/pre-commit文件。
因此,当我提交时,钩子没有运行,提交会直接通过而没有被lint-staged检查。
我尝试运行yarn add -D husky@nextnpm i -D husky@next。我还尝试删除node_modules并进行npm rebuild。 .husky/pre-commit
#!/bin/sh
[ -z "$CI" ] && exit 0

. "$(dirname $0)/_/husky.sh"

lint-staged

package.json

"scripts": {
  "postinstall": "husky install"
},

1
同样适用于 Husky 7.0.4。 - Alexey Nikonov
对于 7.0.4 版本,我按照提示执行了 npx husky install 命令,它成功地运行了。 - kaushalpranav
3个回答

6

husky v5不会生成hooks文件(原因不明)
因此我降级到了4.3.8版本,并删除了.git/hooks目录(此步骤并非必要):

rm -rf .git/hooks
yarn add -D husky@4.3.8

可以确认。使用husky@5.0.9时,Git钩子文件夹未被创建,在提交时会报错说找不到husky-run。降级到husky@4.3.8即可解决。 - Safal Pillai

3
略晚了一些,但今天我也遇到了这个问题。 经过多次搜索,我找到了描述涉及Yarn的安装问题的问题,可以在此处链接中找到。 在我的情况下,yarn没有正确运行husky的post-install脚本,并且根据该线程建议,我发现更改我的package.json中的postinstall行可解决我的问题:
{
    "postinstall": "node ./node_modules/husky/lib/installer/bin install"
}

我在完成设置时多次从各个位置运行安装程序。我发现这个列表的指示很有帮助,可以确保每次重置 git 配置到一个一致的状态,特别是提到hooksPath的那一行。

1

在你的.husky/pre-commit文件中,你需要在lint-staged之前添加yarn

#!/bin/sh
[ -z "$CI" ] && exit 0

. "$(dirname $0)/_/husky.sh"

yarn lint-staged

这是因为:

如果您直接调用本地安装的二进制文件,您需要通过软件包管理器运行它们

您可以在此处此处找到更多信息。希望能帮到您


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