在前两节咱们通过 prettier + ESLint
解决了代码格局的问题,然而咱们之前也说过 编程标准 指的可不仅仅只是 代码格局标准。
除了 代码格局标准 之外,还有另外一个很重要的标准就是 git
提交标准!
在当初的我的项目开发中,通常状况下,咱们都会通过 git
来治理我的项目。只有通过 git
来治理我的项目,那么就必然会遇到应用 git
提交代码的场景
当咱们执行 git commit -m "形容信息"
的时候,咱们晓得此时必须增加一个形容信息。然而中华文化博大精深,不同的人去填写形容信息的时候,都会依据本人的了解来进行形容。
而很多人的形容“天马行空”,这样就会导致他人在看你的提交记录时,看不懂你说的什么意思?不晓得你以后的这次提交到底做了什么事件?会不会存在潜在的危险?
比如说,咱们来看这几条提交记录:
你可能设想失去它们经验了什么吗?
所以 git
提交标准 势在必行。
对于 git
提交标准 来说,不同的团队可能会有不同的规范,那么明天就以目前应用较多的 Angular 团队标准 延长出的 Conventional Commits specification(约定式提交)为例,来为大家分享 git
提交标准
约定式提交标准要求如下:
<type>[optional scope]: <description>
[optional body]
[optional footer(s)]
-------- 翻译 -------------
< 类型 >[可选 范畴]: < 形容 >
[可选 注释]
[可选 脚注]
其中 <type>
类型,必须是一个可选的值,比方:
- 新性能:
feat
- 修复:
fix
- 文档变更:
docs
- ….
也就是说,如果要依照 约定式提交标准 来去做的化,那么你的一次提交形容应该是这个样子的:
我想大家看到这样的一个提交形容之后,心里的感觉应该和我一样是解体的!要是每次都这么写,写到猴年马月了!
如果你有这样的困惑,那么”祝贺你“,接下来我将分享这个这个问题的解决办法!
Commitizen 助你规范化提交代码
在下面咱们讲了 约定式提交标准,咱们晓得如果严格装置 约定式提交标准,来手动进行代码提交的话,是一件十分苦楚的事件,然而 git 提交标准的解决 又势在必行,那么怎么办呢?
你遇到的问题,也是其他人所遇到的!
通过了很多人的左思右想,就呈现了一种叫做 git 提交规范化工具 的货色,而咱们要学习的 commitizen
就是其中的佼佼者!
commitizen
仓库名为 cz-cli,它提供了一个 git cz
的指令用于代替 git commit
,简略一句话介绍它:
当你应用
commitizen
进行代码提交(git commit)时,commitizen
会提交你在提交时填写所有必须的提交字段!
这句话怎么解释呢?不必焦急,上面咱们就来装置并且应用一下 commitizen
,应用实现之后你天然就明确了这句话的意思!
-
全局装置
Commitizen
npm install -g commitizen@4.2.4
-
装置并配置
cz-customizable
插件-
应用
npm
下载cz-customizable
npm i cz-customizable@6.3.0 --save-dev
-
增加以下配置到
package.json
中... "config": { "commitizen": {"path": "node_modules/cz-customizable"} }
-
-
我的项目根目录下创立
.cz-config.js
自定义提醒文件module.exports = { // 可选类型 types: [{ value: 'feat', name: 'feat: 新性能'}, {value: 'fix', name: 'fix: 修复'}, {value: 'docs', name: 'docs: 文档变更'}, {value: 'style', name: 'style: 代码格局(不影响代码运行的变动)' }, { 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: 打包'} ], // 音讯步骤 messages: { type: '请抉择提交类型:', customScope: '请输出批改范畴(可选):', subject: '请简要形容提交(必填):', body: '请输出详细描述(可选):', footer: '请输出要敞开的 issue(可选):', confirmCommit: '确认应用以上信息提交?(y/n/e/h)' }, // 跳过问题 skipQuestions: ['body', 'footer'], // subject 文字长度默认是 72 subjectLimit: 72 }
- 应用
git cz
代替git commit
应用git cz
代替git commit
,即可看到提醒内容
那么到这里咱们就曾经能够应用git cz
来代替了 git commit
实现了规范化的提交诉求了,然而以后仍然存在着一个问题,那就是咱们必须要通过 git cz
指令才能够实现规范化提交!
那么如果有马虎的共事,它们遗记了应用 git cz
指令,间接就提交了怎么办呢?
那么有没有形式来限度这种谬误的呈现呢?
请看下一节分享《标准化编程标准解决方案之 Git Hooks》