GTM

73 阅读3分钟

一、什么是 GTM

GTM 指的是 Git Task Management,它是一种工具或流程配置,用于在 Git 操作中自动执行特定的任务。这些任务通常包括代码检查、格式化、测试等,在提交代码(git commit)或推送代码(git push)时强制执行。

关键点

  • Pre-commit 钩子:在 git commit 之前自动执行的脚本,可以用于代码格式检查、语法检查等任务。例如,使用 ESLint 检查代码风格,确保所有的 v-for 都有 key 属性等。

  • 代码质量控制:通过在 Git 操作时自动运行这些任务,可以确保代码库中的代码质量一致。任何不符合标准的代码都无法提交,从而避免了低质量代码进入主分支。

  • 自动化工具集成:GTM 通常集成了多个自动化工具,如 ESLint、Prettier、Stylelint 等,这些工具会在每次提交时自动运行,审查代码的质量和风格。

二、如何配置

要配置 GTM(Git Task Management),你通常会通过 Git 钩子和一些代码质量工具(如 ESLint、Prettier、Husky 等)来实现。以下是一个配置 GTM 的常见方法,具体步骤如下:

1. 安装必要的工具

首先,你需要安装 Node.js 和 npm(Node 包管理器),以便使用 JavaScript 工具。如果你还没有安装 Node.js,可以从 Node.js 官网 下载并安装。

2. 初始化项目

在你的项目中,运行以下命令初始化 package.json 文件(如果还没有的话):

npm init -y

3. 安装 Husky 和 lint-staged

Husky 可以帮助你轻松地管理 Git 钩子,而 lint-staged 可以在 Git 暂存区的文件上运行代码检查工具。

npm install husky lint-staged --save-dev

4. 配置 Husky

在你的 package.json 中,添加 Husky 和 lint-staged 的配置:

{
  "husky": {
    "hooks": {
      "pre-commit": "lint-staged"
    }
  },
  "lint-staged": {
    "**/*.js": [
      "eslint --fix",
      "git add"
    ]
  }
}

5. 安装 ESLint(可选)

如果你使用 JavaScript 或 TypeScript,建议安装 ESLint 以检查代码风格和质量:

npm install eslint --save-dev

然后可以通过以下命令生成 .eslintrc 配置文件:

npx eslint --init

6. 配置 ESLint

在你的项目根目录下创建或编辑 .eslintrc.json 文件,添加或修改 ESLint 配置:

{
  "env": {
    "browser": true,
    "es2021": true
  },
  "extends": "eslint:recommended",
  "parserOptions": {
    "ecmaVersion": 12,
    "sourceType": "module"
  },
  "rules": {
    "semi": ["error", "always"],
    "quotes": ["error", "single"]
  }
}

7. 测试配置

现在,每次你尝试提交代码时,Husky 会触发 pre-commit 钩子,lint-staged 将运行 ESLint 在暂存区文件上检查代码。如果代码不符合 ESLint 的规则,提交将失败,你需要修复问题才能提交成功。

8. 可选配置

你还可以添加更多的工具或任务到 lint-staged 配置中,比如 Prettier、Stylelint、或者 Jest,用于检查代码风格、样式表和运行测试。

9. 手动触发检查(可选)

你可以通过以下命令手动触发检查,而不需要提交代码:

npx lint-staged

三、绕过检查的方法

你可以在某次提交中绕过这些检查,使用以下几种方法:

  1. 使用 --no-verify 选项: 这是最常见的绕过方法,添加 --no-verify 参数来跳过 pre-commit 钩子。例如:

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

    这样就可以跳过本次提交的检查。

  2. 临时禁用钩子: 如果你有多个文件要提交,并且不想使用 --no-verify,可以临时禁用所有 Git 钩子:

    git commit -m "Your commit message" --no-verify
    
  3. 修改配置: 如果你经常需要绕过这些检查,可以考虑修改 Git 钩子的配置,来调整检查的严格程度或者在开发阶段禁用某些规则。