哈士奇预提交挂钩未触发

sag*_*age 6 git husky

我有一个问题husky。我希望 huskyeslint在 git commit 即将完成时运行并且更漂亮,以便它可以强制执行干净的编码检查。我已经设置eslintprettier集成了两者。手动使用时它们工作正常。eslint然而,如果违反其中一条规则,哈士奇允许提交。

我还将pre-commit.sample本地项目.git/hooks目录中的文件重命名为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"
  }
Run Code Online (Sandbox Code Playgroud)

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

Rin*_*Rin 6

我认为要使其与huskyv7 一起使用,您需要将要运行预提交的内容移动到名为.husky/pre-commit. huskyv7 不会使用您的package.json. 请参阅此处了解从 v4 升级到 v7 的信息


sag*_*age 4

我找到了一种更简单的方法来做到这一点,而不必自己启动 husky 的安装。

我安装了 lint-staged 并测试了由它通过运行以下命令设置的 husky 预提交挂钩:

npx mrm@2 lint-staged
yarn install

Run Code Online (Sandbox Code Playgroud)

第一行安装 lint-staged 和 husky,并在目标 package.json 文件中添加带有示例脚本的正确部分,以供您使用或修改。

将目标 package.json 暂存并提交到 git 中(本地 git 就足够了)。进行可能会导致 eslint 查找错误和提交失败的更改。尝试再次提交以测试 lint 阶段设置。Lint-staged 应该会阻止这次提交文件。