沙哑的预提交钩子不触发

husky pre-commit hook not triggering

我遇到了 husky 的问题。我希望 husky 能够 运行 eslint 并且在即将完成 git 提交时更漂亮,以便它可以执行干净的编码检查。我已经设置了 eslintprettier 并集成了两者。手动使用时它们工作正常。但是,如果违反了 eslint 规则之一,哈士奇允许提交。

我还将本地项目 .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"
  }

请问,这可能是什么问题? 非常感谢。

我认为要使其与 husky v7 一起使用,您需要将要 运行 预提交的内容移动到名为 .husky/pre-commit 的文件中。 husky v7 不会使用您 package.json 中的配置。参见 here for upgrading from v4 to v7

我找到了一种更简单的方法,无需自己启动 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 应该会阻止文件被提交。