📜  husky hook 忽略 yaml (1)

📅  最后修改于: 2023-12-03 15:01:21.118000             🧑  作者: Mango

Husky Hook 忽略 YAML

在开发过程中,我们常常会需要使用 Husky Hook 来实现 git 钩子功能,比如在 commit 和 push 代码之前,对代码进行质量检查或单元测试等。然而,当你的项目是用 YAML 格式来进行配置的时候,你可能会遇到一些问题。本文将介绍如何在使用 Husky Hook 的情况下忽略 YAML 文件。

问题描述

在使用 Husky Hook 的时候,我们常常需要指定需要检查的文件,如:

// package.json
{
  "husky": {
    "hooks": {
      "pre-commit": "npm run lint-staged"
    }
  },
  "lint-staged": {
    "*.js": "eslint --fix"
  }
}

这样配置以后,在执行 commit 时,会对所有的 .js 文件进行 eslint 检查和修复。但是,如果你的项目是使用 YAML 格式的配置文件,比如 Kubernetes 的配置文件,或者使用了 Serverless 框架来编写 AWS Lambda 函数等,你会发现这些 YAML 文件也会被检查。这显然是不是我们想要的行为。

解决方案

为了解决这个问题,我们需要在 Husky Hook 的配置文件中指定需要忽略的文件或者文件夹。具体的实现方式有如下几种:

1. 使用 glob 语法

Husky Hook 可以使用 glob 语法来匹配需要忽略的文件或者文件夹,比如:

// package.json
{
  "husky": {
    "hooks": {
      "pre-commit": "npm run lint-staged"
    }
  },
  "lint-staged": {
    "*.js": "eslint --fix",
    "**/*.yaml": "true"
  }
}

这样就可以忽略所有的 YAML 文件了。

2. 使用 $GIT_DIR

你还可以在 Husky Hook 的配置文件中使用 $GIT_DIR 变量来指定需要忽略的文件或者文件夹,比如:

// package.json
{
  "husky": {
    "hooks": {
      "pre-commit": "npm run lint-staged"
    }
  },
  "lint-staged": {
    "*.js": "eslint --fix",
    "$GIT_DIR/**/*.yaml": "true"
  }
}

这样也可以忽略所有的 YAML 文件了。

3. 使用 .gitignore 文件

最后,你还可以通过在项目根目录下添加 .gitignore 文件来实现忽略 YAML 文件的功能。比如,在 .gitignore 文件中添加如下内容:

*.yaml

这样就可以忽略所有的 YAML 文件了。不过需要注意的是,这种方式是针对 git 的,对于其他工具可能无效。

总结

本文介绍了如何在使用 Husky Hook 的情况下忽略 YAML 文件。通过使用 glob 语法、$GIT_DIR 变量或者 .gitignore 文件等方式,我们可以灵活地控制需要检查的文件,从而有效提高项目的开发效率和代码质量。