如何防止 eslint 阻止 git 提交?

How to prevent eslint from blocking git commit?

我是 eslint 的新手,正在使用它来加强编码风格。但是,当我在代码中写入 TODO 项时,我收到了 eslint 警告,没关系。但是,现在当我尝试 git 提交时,它返回:

**** ESLint errors found :     
line 145, col 9, Warning - Unexpected 'todo' comment. (no-warning-comments)

如何防止 eslint 阻止我提交?我希望它仍然警告我有关 TODO 等的信息,但我也希望能够提交我的代码。

您有预提交挂钩。

git commit --no-verify

允许避免一次。或者您可以将其从 .git/hooks.

中完全删除

解决方案

我导航到我的 .git/hooks 目录并找到了一个预提交 bash 脚本。在 eslint 失败的情况下,我将 return 值从 1 更改为 0 并解决了问题。

0 值表示通过并允许提交继续,非零值表示失败状态并将取消提交。

通常警告不会阻止仅提交错误。如果它设置为错误,您可以将其切换为警告,但看起来您可能已经将其设置为警告。

"rules": {
 ...
 
 "no-warning-comments": 0,
 ...
}

另一个选项是禁用给定行的规则

// eslint-disable-next-line no-warning-comments
// TODO disable eslint warning for this todo ;)

尽管这样可以完全避免出现警告

否则你需要查看正在设置什么来防止提交,很可能是位于 root/.git/hooks/pre-commit 的预提交挂钩中的某些内容并告诉它允许警告并阻止错误

在我的案例中,罪魁祸首是 package.json 由创建 CLI 的项目自动创建的条目 (nuxt.js)。我从 package.json 中删除了这些条目:

"lint-staged": { ... },
"husky": { ... }

它解决了问题。

提交时使用 --no-verify 预提交挂钩。

git commit --no-verify -m "Commit message"