【问题标题】:husky pre-commit hook not triggering哈士奇预提交挂钩未触发
【发布时间】:2021-10-04 22:36:59
【问题描述】:

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

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

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

【问题讨论】:

    标签: git husky


    【解决方案1】:

    我找到了一种更简单的方法来做到这一点,而无需自己开始安装 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 应该会阻止文件这次被提交。

    【讨论】:

      【解决方案2】:

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

      【讨论】:

      • 您好,我会检查一下,让您知道结果。非常感谢
      • 非常感谢@Rin 的回答。但是,发生了很多变化,我没有完成该项目的 husky 设置,然后才开始做其他事情。最近,我不得不在一个 Javascript 项目上工作,我在其中进行了项目设置,并且不得不再次这样做。我发现了另一种我认为更简单的方法,它不需要添加我想在.husky/pre-commit 中运行的命令。我使用了 lint-staged。我将在下面详细描述这种方法。 :)
      猜你喜欢
      • 2021-09-10
      • 2011-10-27
      • 2019-12-25
      • 2019-06-02
      • 2021-06-29
      • 1970-01-01
      • 2014-07-26
      • 2013-03-20
      • 1970-01-01
      相关资源
      最近更新 更多