赞
踩
为什么我们要规范提交
一. 修改类型
每个类型值都表示了不同的含义,类型值必须是以下的其中一个:
feat:提交新功能
fix:修复了bug
docs:只修改了文档
style:调整代码格式,未修改代码逻辑(比如修改空格、格式化、缺少分号等)
refactor:代码重构,既没修复bug也没有添加新功能
perf:性能优化,提高性能的代码更改
test:添加或修改代码测试
chore:对构建流程或辅助工具和依赖库(如文档生成等)的更改
husky 是一个 Git-Hooks 工具. 那么 hooks 是什么呢 ?
“hooks” 直译是 “钩子”,它并不仅是 react,甚至不仅是前端界的专用术语,而是整个行业所熟知的用语。通常指:系统运行到某一时期时,会调用被注册到该时机的回调函数。
规范化提交第一步就是要在 git commit之前先做一次Lint校验,限制不规范代码的提交,那 husky 这个工具就能做到。husky 继承了Git下所有的钩子,在触发pre-commit钩子的时候,阻止不合法的 commit、push 等等。
初始化 git 目录
如果没有先初始化 git, 需要重新装husky。
git init -y
安装 husky
yarn 安装
yarn add husky -D
or npm 安装
npm install husky -D
添加 husky 脚本
在 package.json 文件 scripts 中手动添加
"prepare": "husky install"
或者直接执行命令添加
npm set-script prepare "husky install"
prepare 脚本会在npm install(不带参数)之后自动执行。也就是说当我们执行npm install安装完项目依赖后会执行 husky install命令,该命令会创建.husky/目录并指定该目录为git hooks所在的目录。
执行 npm run prepare
执行之后会发现项目根目录多了个.husky的目录及文件。
在该目录下添加 pre-commit 和 commit-msg 文件。
在.husky/pre-commit文件添加如下命令:
#!/bin/sh
. "$(dirname "$0")/_/husky.sh"
pnpm exec lint-staged
或 pnpm run format
# 当然也可以配合 prettier pretty-quick 这个两个插件来做代码格式化的修复,不需要可不用
# pnpm exec pretty-quick --staged
这样在使用 git commit 之前,会先执行 ./.husky/pre-commit 下的脚本,实现提交前的拦截修复
commitlint 是什么
对于我们的commit信息,也是有统一规范的,不能随便写,要让每个人都按照统一的标准来执行,我们可以利用commitlint来实现。
安装
pnpm add @commitlint/config-conventional @commitlint/cli -D
新建 commitlint.config.cjs 然后添加下面的代码:
module.exports = {
extends: ['@commitlint/config-conventional'],
// 校验规则
rules: {
'type-enum': [
2,
'always',
[
'feat',
'fix',
'docs',
'style',
'refactor',
'perf',
'test',
'chore',
'revert',
'build',
],
],
'type-case': [0],
'type-empty': [0],
'scope-empty': [0],
'scope-case': [0],
'subject-full-stop': [0, 'never'],
'subject-case': [0, 'never'],
'header-max-length': [0, 'always', 72],
},
}
package.json 中配置scripts
{
“scripts”: {
“commitlint”: “commitlint --config commitlint.config.cjs -e -V”
},
}
配置 husky
npx husky add .husky/commit-msg
在生成的commit-msg文件中添加下面的命令
#!/usr/bin/env sh
. “$(dirname – “$0”)/_/husky.sh”
pnpm commitlint
或 npx --no-install commitlint --edit "$1"
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。