提交规范
上半篇,直接快速讲解配置使用,下半场番外篇 commit-msg,良好的提交规范可以清晰管理版本与每一次提交,接下来浪我们在前端的项目中安装并执行吧
commitlint
相信大家目前项目都是运行在node平台上的vue/react/angl项目 1、不多说先安装下面三件套
启动执行插件
yarn add || npm install husky --dev
commitlint核心执行文件 安装项目开发环境
yarn add || npm install @commitlint/cli --dev
commitlint自定义配置文件 安装项目开发环境
yarn add || npm install @commitlint/config-conventional --dev
2、安装好了,怎么配置怎么用 一)配置package.json,增一个执行对象,有的话修改
"husky": {
"hooks": {
"pre-commit": "lint-staged",
"commit-msg": "commitlint -E HUSKY_GIT_PARAMS"
}
},
二)在根目录创建commitlint.config.js文件
module.exports = {
extends: ['@commitlint/config-conventional'],
rules: {
'body-leading-blank': [2, 'always'], // body换行
'header-max-length': [2, 'never', 72], // header 最长72
'type-enum': [
2,
'always',
[
'add', // 创建功能
'del', // 删除功能
'fix', // 解决问题
'bump', // 修改某个版本号
'conf', // 配置文件修改
'refactor', // 必须进行重构的代码
'reformat', // 代码格式化
'optimize', // 代码性能优化
'doc', // 文档构建与修改
'start', // 开始做某事,比如创建分支等
'end' // 结束做某事,比如删除分支等
]
]
}
}
三)提交格式
- Commit message格式,注意冒号后面有空格
<type>: <subject>
换行
<body>
换行
<footer>
- 规则参数问题
'xxxxx': [级别,适用,值]
规则由名称和配置数组组成。配置数组包含: 级别 [0..2]:0禁用规则。因为1它将被视为2错误警告。 适用 always|never:never颠倒规则。 值:用于此规则的值。
四)快乐的提交吧!
创建分支篇
请细品语雀git提交规范 常见三类分支创建规范(详情见上面链接)
- feature_xxx 功能
- release 提测标准分支 提测请打tag
- hotfix_xxx 热修复分支
番外篇
- 另外配置方案 一、创建.commitlintrc.js,.commitlintrc.json或者.commitlintrc.yml 二、package.json中配置commitlint对象(没试过) 三、其他配置选项(文档不多)
'type-empty': [2, 'never'], // <type> 不能为空
'type-case': [2, 'always', 'lower-case'], // <type>格式小写
'scope-empty': [2, 'never'], // <scope> 不能为空
'scope-case': [2, 'always', 'lower-case'], // <scope> 格式 小写
'subject-empty': [2, 'never'], // <subject> 不能为空
'subject-full-stop': [2, 'never', '.'], // <subject> 以.为结束标志
// <subject> 格式
// 可选值
// 'lower-case' 小写 lowercase
// 'upper-case' 大写 UPPERCASE
// 'camel-case' 小驼峰 camelCase
// 'kebab-case' 短横线 kebab-case
// 'pascal-case' 大驼峰 PascalCase
// 'sentence-case' 首字母大写 Sentence case
// 'snake-case' 下划线 snake_case
// 'start-case' 所有首字母大写 start-case
'subject-case': [2, 'never', []],
'body-leading-blank': [2, 'always'], // body换行
'footer-leading-blank': [1, 'always'], // <footer> 以空行开头
'header-max-length': [2, 'never', 72], // header 最长72
四、快乐自定义快捷命令,enen还是不搞啦,大家还是认真按规范提交吧(有兴趣可以查查哦)
初期问题篇
修改.git文件配置commit文件,日志,用户使用,维护等问题
斜杠分割确实是文件夹,改用_(原因-母鸡)
#开头问题,vim编辑器默认#开头,一、commitlint插件会滤掉#并报错,二、解析header时候正则不允许并报错,so:rule中特殊符号不要轻易添加
就因为一个#,我就很好奇怎么配置不了,我这暴脾气,强改规则重新发包(可惜挂在半路),本地改完确实#号啊,其他的都可以改,最后git提交成功 一)第一步打开node_modules,第一眼看去就是@commitlint文件夹,点开,我***,怎么这么多东西,随便点了点,层层依赖,套麻花呢,我是谁,我哪里? 二)怎么看呢,想了想,他的配置规则key是’type-enum‘,行就你了,全局搜,开门啦,在他js文件中,node控制台打印header,我输入的是#add,你怎么输出null,层层看他的数据走向(差点都不想看啦,不过看人家写的js,思路思想还是挺有意思的),走着走着走到最外层发现还是打印null,我吐了,怎么输入进来,还没规则判断就是null 三)在最外层打印null的旁边,定眼一看,还有个外部依赖的解析包,牛皮,走出@commutlint,在node_modules中最后发现三兄弟
- conventional-changelog-angular angl 规范的东西不管
- conventional-changelog-conventionalcommits 忘了这啥
- conventional-commits-parser 就是你这个瓜皮
输入 #add
正则 headerPattern: /^(\w*)(?:\(([\w$.\-* ]*)\))?: (.*)$/,
^(\w*) 抬走下一个
这个npm包,将你输入的commitlint部分信息,进行拆分形成 key:value,然后给@commitlint
流程
@commitlint/cli --- 依赖@commitlint/lint
@commitlint/lint --- 依赖@commitlint/parse
@commitlint/parse --- 依赖 conventional-commits-parser