前面两节我们通过prettier+ESLint解决了代码格式的问题,但是之前我们也说过,“编程规范”不仅仅指的是“代码格式规范”。除了代码格式规范,还有一个很重要的规范就是git提交规范!在现在的项目开发中,我们通常使用git来管理项目。只要是通过git管理项目的,就难免会遇到使用git提交代码的场景。当我们执行gitcommit-m"描述信息"的时候,我们知道这个时候我们必须添加一个描述信息。但中华文化博大精深,不同的人在填写描述信息时,会根据自己的理解来描述。而且很多人的描述都是“天马行空”,这样会导致别人看你的投稿记录时不明白你的意思吗?不知道你现在的提交是做什么的?会不会有潜在风险?比如我们看看这些commit记录:你能想象他们经历了什么吗?所以git提交规范势在必行。对于git提交规范,不同的团队可能有不同的标准,所以今天我就以目前使用较多的Angular团队规范扩展而来的ConventionalCommits规范(常规提交)为例,与大家分享git提交规范。常规投稿规范要求如下:[optionalscope]:[optionalbody][optionalfooter(s)]--------translation--------------[optionalrange]:[optionaltext][optionalfootnote]其中类型必须是一个可选值,例如:新特性:featrepair:fixdocumentchange:docs...that也就是说,如果你要按照常规的投稿规范来做,那么你的投稿描述应该是这样的:我想大家看到这样的投稿描述都会有同感我也崩溃了!如果我每次都这样写,那就是猴年了!如果你有这样的困惑,那么“恭喜你”,我接下来会分享这个问题的解决方法!Commitizen帮助您规范提交代码。我们在上面谈到了常规的提交规范。我们知道,如果严格安装常规提交规范,手动提交代码,是一件很痛苦的事情,但是对git提交规范的处理,仍然是必须要做的,那怎么办呢?你遇到的问题和别人的一样!经过很多人的苦思冥想,有个东西叫做git提交规范化工具,而我们要学习的commitizen就是其中的佼佼者!commitizen仓库叫做cz-cli,它提供了一个gitcz命令来代替gitcommit。一句话介绍一下:当你使用commitizen进行代码提交(gitcommit)时,commitizen会提交所有的Requiredsubmission字段!这句话怎么解释?别担心,让我们安装并使用commitizen。用过之后自然就明白这句话的意思了!全局安装Commitizennpminstall-gcommitizen@4.2.4安装配置cz-customizable插件使用npm下载cz-customizablenpmicz-customizable@6.3.0--save-dev将以下配置添加到package.json..."config":{"commitizen":{"path":"node_modules/cz-customizable"}}Projectroot在目录下创建.cz-config.js自定义提示文件module.exports={//optionaltypetypes:[{value:'feat',name:'feat:newfeature'},{value:'fix',name:'fix:fix'},{value:'docs',name:'docs:文档更改'},{value:'style',name:'style:代码格式(不影响代码执行的更改)'},{value:'refactor',name:'refactor:重构(既不添加功能也不修复bug)'},{value:'perf',name:'perf:性能优化'},{value:'test',name:'test:addtest'},{value:'chore',name:'chore:buildprocessorhelperchanges'},{value:'revert',name:'revert:fallback'},{value:'}build',name:'build:package'}],//消息步骤messages:{type:'请选择提交类型:',customScope:'请输入修改范围(可选):',subject:'请简要描述提交(必填):',body:'请输入详细描述(可选):',footer:'请输入要关闭的issue(可选):',confirmCommit:'确认使用以上提交资料?(y/n/e/h)'},//跳过问题skipQuestions:['body','footer'],//主题文本长度默认为72subjectLimit:72}使用gitcz而不是gitcommit使用gitcz而不是gitcommit,可以看到提示内容。所以这里我们可以使用gitcz代替gitcommit来实现标准化提交请求,但是还有一个问题,就是必须通过gitcz命令才能完成标准化提交!那么如果有马虎的同事忘记使用gitcz命令直接提交了怎么办?那么有没有办法限制这个错误的发生呢?请看下一节分享《 标准化编程规范解决方案之阻止不合规的提交消息 》