源 lint 的预提交挂钩检查(未暂存)
Pre commit hook checks for source lint (not staged)
git 钩子的想法是为了防止提交错误的源代码。为此,我使用 husky
。这是我的设置:
"husky": {
"hooks": {
"pre-commit": "ng lint --fix=true"
}
}
如果有 lint 错误,它会阻止提交。场景如下:
- 开发人员编写了错误的代码(例如
x==y
从 lint 的角度来看应该是 x===y
)
- 他使用了这些命令:
git add .
和 git commit -m "msg here"
但都失败了。因为 lint 失败。
- 他更正了源代码。但是他没有再次执行
git add .
,而是使用了这个命令:git commit -m "msg here"
。这次 lint 没有失败,因为在源代码中一切都很好,ng lint
成功了。但实际上,他是在提交之前添加的旧版本。
知道如何防止这种情况吗?
lint-staged
就是您要找的。
它只会对暂存的文件进行 lint,非常高效。
这意味着它会强制您的示例中的开发人员在 lint-staged
接受之前进行修复。
将此放入您的 package.json 文件中:
{
...
"devDependencies": {
"lint-staged": "^10.5.1",
...
}
...
"husky": {
"hooks": {
"pre-commit": "lint-staged"
}
}
...
}
git 钩子的想法是为了防止提交错误的源代码。为此,我使用 husky
。这是我的设置:
"husky": {
"hooks": {
"pre-commit": "ng lint --fix=true"
}
}
如果有 lint 错误,它会阻止提交。场景如下:
- 开发人员编写了错误的代码(例如
x==y
从 lint 的角度来看应该是x===y
) - 他使用了这些命令:
git add .
和git commit -m "msg here"
但都失败了。因为 lint 失败。 - 他更正了源代码。但是他没有再次执行
git add .
,而是使用了这个命令:git commit -m "msg here"
。这次 lint 没有失败,因为在源代码中一切都很好,ng lint
成功了。但实际上,他是在提交之前添加的旧版本。
知道如何防止这种情况吗?
lint-staged
就是您要找的。
它只会对暂存的文件进行 lint,非常高效。
这意味着它会强制您的示例中的开发人员在 lint-staged
接受之前进行修复。
将此放入您的 package.json 文件中:
{
...
"devDependencies": {
"lint-staged": "^10.5.1",
...
}
...
"husky": {
"hooks": {
"pre-commit": "lint-staged"
}
}
...
}