一、什么是 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
三、绕过检查的方法
你可以在某次提交中绕过这些检查,使用以下几种方法:
-
使用
--no-verify选项: 这是最常见的绕过方法,添加--no-verify参数来跳过 pre-commit 钩子。例如:git commit -m "Your commit message" --no-verify这样就可以跳过本次提交的检查。
-
临时禁用钩子: 如果你有多个文件要提交,并且不想使用
--no-verify,可以临时禁用所有 Git 钩子:git commit -m "Your commit message" --no-verify -
修改配置: 如果你经常需要绕过这些检查,可以考虑修改 Git 钩子的配置,来调整检查的严格程度或者在开发阶段禁用某些规则。