为什么是husky
Husky 是一个 Git hooks(钩子) 工具,在你每次提交代码的时候检查你代码是否符合规范,这个规范可以自由设置,例如ESLint、Prettier等,尽管项目中有配置检测代码规范的工具,但难免有新同学会提交一些不规范的代码和message,所以直接在源头解决就好。
其本旨在帮助开发者在特定的 Git 操作(如 commit、push 等)之前或之后运行自定义脚本。
引用husky
在项目中执行命令
pnpm i husky -D -w
注意老版本和新版本有差异。具体参考 husky
在package.json中 配置
"scripts": {
"prepare": "husky"
}
在根目录中手动创建一个.husky文件夹 然后执行 npx husky
会在.husky 下生成一个_文件下 目录结构如下:
Commitlint & 约定式提交(Conventional Commits)
Commitlint主要用于检查Git提交信息(commit messages)是否符合特定格式的工具。
执行命令:分别为commitlint的配置包和commitlint的命令行工具
pnpm install --save-dev @commitlint/config-conventional @commitlint/cli -w
新建 commitlint.config.cjs 内容如下:
module.exports = {
extends: ['@commitlint/config-conventional']
};
接着在.husky文件夹下新增commit-msg文件,内容如下:
npx --no -- commitlint --edit "$1"
到此commitlint配置完毕。
约定式提交
Commitlint 通常与约定式提交一起使用。约定式提交是一种提交信息格式规范,具有如下结构:
<type>[optional scope]: <description>
[optional body]
[optional footer]
type:
scope(可选):影响的范围或模块。
description:简短描述本次提交的内容。
body(可选):提交内容的详细描述。
footer(可选):任何额外的信息,例如关联的 issue 编号、BREAKING CHANGE 等。
一般来讲,如果不是强制要求,只需type:description就行。
引用lint-staged
lint-staged主要作用是对那些已经通过 git add 暂存的文件运行linters进行检测。
首先执行命令:
pnpm add lint-staged -D -w
在package.json文件中配置:
"scripts": {
...
"lint-staged": "lint-staged"
},
"lint-staged": {
"src/**/*.{js,jsx,ts,tsx,vue}": [
"eslint --ext .js,.jsx,.vue,.ts,.tsx --fix --quiet ./",
"stylelint --fix \"packages/components/src/**/*.{css,less}\""
]
}
接着在.husky文件夹下新增 pre-commit 内容如下:
pnpm run lint-staged
最后可以尝试提交一个不规范的commit mssage:
结语
如有错误欢迎纠正~