前端项目 Git 提交约束配置
1. 准备工作
- husky:触发 Git Hooks,执行脚本;
$ npm install -D husky
package.json
{
"scripts": {
"prepare": "husky install",
"lint": "eslint --ext .js,.ts ./src --fix"
}
}
$ npm run prepare> husky installhusky - Git hooks installed
这个时候,我们发现在项目根目录下,多了一个文件夹:
.
├── .husky
|├── -
||└── husky.sh
|└── .gitignore
2. 代码格式校验
- lint-staged:检测文件,只对暂存区中有改动的文件进行检测,可以在提交前进行 Lint 操作;
$ npm install -D lint-staged
package.json
{
"scripts": {
"lint-staged": "lint-staged --allow-empty"
},
"lint-staged": {
"src/**/*.{js,ts}": ["eslint --fix"]
}
}
$ npx husky add .husky/pre-commit "npm run lint-staged"
husky - created .husky/pre-commit
执行后,我们发现,
.husky
目录下多了一个文件:.
├── .husky
|└── pre-commit
$ cat ./.husky/pre-commit
#!/bin/sh
. "$(dirname "$0")/_/husky.sh"npm run lint-staged
3. Git 提交消息格式校验
- commitizen:使用规范化的 message 提交;
- commitlint: 检查 message 是否符合规范;
- cz-conventional-changelog:适配器。提供 conventional-changelog 标准(约定式提交标准)。
基于不同需求,也可以使用不同适配器(比如: cz-customizable)。
$ npm install -D commitizen @commitlint/config-conventional @commitlint/cli
Commitizen 是一个主流的 Commit message 的生成工具,支持 Angular 的 commit message 格式,被众多主流框架采用。
安装完成后,需要在项目目录下,输入以下命令来初始化您的项目,以使用 cz-conventional-changelog 适配器:
$ npx commitizen init cz-conventional-changelog --save-dev --save-exact
- 安装 cz-conventional-changelog;
- 保存其依赖到 package.json 中;
- 添加 config.commitizen key 到 package.json 中,如下:
{ "config": { "commitizen": { "path": "./node_modules/cz-conventional-changelog" } } }
git cz
代替 git commit
命令即可,或者可以增加友好的 npm 命令,通过 npm run commit 进行提交:{
"scripts": {
"commit": "git cz"
}
}
此时我们已经根据约定规范提交了消息,但是我们怎么知道提交的消息是不是正确的呢?
那么接下来就需要配置刚刚介绍到的 commitlint,只需要一句命令即可完成配置,它会在项目根目录下面创建一个 commitlint.config.js 配置文件:
$ echo "module.exports = { extends: ['@commitlint/config-conventional'] }" > commitlint.config.js
它会使用 @commitlint/config-conventional 这个包里面提供的校验规则进行校验,你可以理解为 ESLint 的规则。
有了这个校验工具,怎么才可以触发校验呢,我们希望在提交代码的时候就进行校验,这时候 husky 就可以出场了,他可以触发 Git Hook 来执行相应的脚本,而我们只需要把刚刚的校验工具加入脚本就可以了。
我们需要定义触发 hook 时要执行的 Npm 脚本:
package.json
{
"scripts": {
"commitlint": "commitlint --config commitlint.config.js -e -V"
}
}
设置
commit-msg
钩子,提交 message 执行校验。
$ npx husky add .husky/commit-msg "npm run commitlint"
husky - created .husky/commit-msg
4. 后记
【前端项目 Git 提交约束配置】此时已经完成配置了,现在团队里面任何成员的提交必须按照严格的规范进行了。
推荐阅读
- gitlab|gitlab 通过备份还原 admin/runner 500 Internal Server Error
- gitlab|Gitlab升级(12.2.1到14.6.4)
- 17|17 关山松 第二课作业#公众号项目# D20
- Jsr303做前端数据校验
- RxJava|RxJava 在Android项目中的使用(一)
- Hacking|Hacking with iOS: SwiftUI Edition - SnowSeeker 项目(一)
- 靠QQ月入上万灰色暴利偏门的项目
- spring|spring boot项目启动websocket
- 7、前端--jQuery简介、基本选择器、基本筛选器、属性选择器、表单选择器、筛选器方法、节点操作、绑定事件
- 前端代码|前端代码 返回顶部 backToTop