Angular提交规范 - GitGuide (zjdoc-gitguide.readthedocs.io)
主要插件
- commitizen: 代码提交辅助工具
- commitlint: 代码校验工具
- husky: githook 插件
- lint-staged: 前端文件过滤工具,只检测暂存区代码
- cz-customizable: 自定义提交配置
安装步骤
1. 环境准备
- git 版本,笔者使用git for win 2.27.0相关钩子无发现问题,也建议>= 2.27.0版本,低版本会有githook 不兼容问题。
- node.js >= 14,使用相关插件需要14或以上版本,推荐使用node.js 14
2. husky安装配置
npm install --save-dev husky@8.0.1
- 在package.json scripts 属性中添加命令并保存:
"scripts" : {
"prepare" : "npx husky install"
}
|
- 在控制台输入:npm run prepare 初始化 husky
第一次执行后,会在工程根目录自动创建.husky 目录
- 创建预提交脚本,控制台输入
npx husky add .husky/pre-commit "npx lint-staged"
|
成功后,目录会生成pre-commit 脚本,如果执行完没有生成,则换一种思路:
先创建脚本文件
npx husky add .husky/pre-commit
|
再将脚本文件中的undefined 改为 npx lint-staged
.husky/pre-commit详细内容
#!/usr/bin/env sh
. "$(dirname -- " $0 ")/_/husky.sh"
npx lint-staged
|
- 创建提交校验信息检测脚本,commitlint 进行校验
npx husky add .husky/commit-msg 'npx --no-install commitlint --edit "$1"'
|
成功后,目录会生成commit-msg脚本,如果执行完没有生成,则类似参考上述步骤:
npx husky add .husky/commit-msg
|
创建脚本文件后,再手动替换:
npx --no-install commitlint --edit "$1"
|
.husky/commit-msg详细内容
#!/usr/bin/env sh
. "$(dirname -- " $0 ")/_/husky.sh"
npx --no-install commitlint --edit "$1"
|
3. lint-staged安装配置
lint-staged 用于预提交时要进行代码检查的规范,比如eslint
npm install --save-dev lint-staged@12.5.0
|
在package.json 新增lint-staged 配置
{
"lint-staged" : {
"src/**/*.{js,vue}" : [
"eslint --fix"
]
},
}
|
即对暂存区 js/vue 代码进行 eslint规范检查
4. commitlint 提交校验安装配置
commitlint 用于提交格式的校验
npm install --save-dev @commitlint/cli@17.0.2 @commitlint/config-conventional@17.0.2
|
在工程根目录创建commitlint.config.js文件,保存如下信息:
module.exports = {
extends: [ '@commitlint/config-conventional' ]
};
|
5. commitizen适配器
用于命令交互式提交的插件,方便大家的进行提交
- 全局安装commitizen
npm install -g commitizen@4.2.4 // 建议使用此版本,更高版本测试存在问题
|
- 安装自定义项目提交配置适配器
npm install --save-dev cz-customizable@6.3.0
|
- package.json 添加commitizen配置,config
{
"devDependencies" : {
"cz-customizable" : "^6.3.0"
},
"config" : {
"commitizen" : {
"path" : "./node_modules/cz-customizable"
}
}
}
|
- 配置cz-customizable配置项
在工程根目录创建 .cz-config.js 配置文件,文件内容参考如下:
module.exports = {
// 可选类型
types: [
{ value: 'feat' , name: 'feat: 新功能' },
{ value: 'fix' , name: 'fix: 修复一个bug' },
{ value: 'docs' , name: 'docs: 文档变更' },
{ value: 'style' , name: 'style: 代码格式(不影响代码运行的变动)' },
{ value: 'conflict' , name: 'conflict: 修复代码冲突' },
{ value: 'font' , name: 'font: 字体文件更新' },
{ value: 'refactor' , name: 'refactor: 重构(既不是增加feature,也不是修复bug)' },
{ value: 'perf' , name: 'perf: 性能优化' },
{ value: 'test' , name: 'test: 增加测试' },
{ value: 'chore' , name: 'chore: 构建过程或辅助工具或配置工具修改' },
{ value: 'revert' , name: 'revert: 回退' },
{ value: 'build' , name: 'build: 影响构建系统或外部依赖项的更改(如:webpack、npm)' }
],
// 交互式消息提示步骤
messages: {
type: '请选择提交类型:' ,
customScope: '请输入修改范围(可选):' ,
subject: '请简要描述提交(必填):' ,
body: '请输入详细描述(可选):' ,
footer: '请输入要关闭的issue(可选):' ,
confirmCommit: '确认使用以上信息提交?(y/n/e/h)'
},
// 跳过问题
skipQuestions: [ 'body' , 'footer' ],
// subject文字长度默认是72
subjectLimit: 72
}
|
如果需要更多的自定义配置,见
官方配置: https://github.com/leoforfree/cz-customizable/blob/master/cz-config-EXAMPLE.js 样例
- 增加自定义校验规则到commitlint配置
编辑commitlint.config.js,导入.cz-config.js 中的自定义的规则项
const { types } = require('./.cz-config.js') const typeList = types.map(item => item.value) module.exports = { extends: ['@commitlint/config-conventional'], rules: { 'type-enum': [2, 'always', typeList] } }
FAQ
- 是否所有开发人员都要进行配置
否,第一次的配置,只需要工程负责人按照上述配置安装配置即可,其他开发人员拉取代码后,需要在本地执行两个操作:
- 本地执行 npm install 。
- npm install -g commitizen@4.2.4
- git cz 提示不存在
确保全局安装了commitizen
标签:git,name,--,value,cz,提交,husky,commitlint From: https://www.cnblogs.com/amnesia999/p/17310137.html