「这是我参与2022首次更文挑战的第3天,活动详情查看:2022首次更文挑战」
起因
在学习慕课网《基于Vue3最新标准,实现后台前端综合解决方案》第二章节时,我注意到,在cz-config.js和commitlint.config.js中定义的type无法支持中文,因为你一旦写了中文,他就会报没有填写的错误。
但是考虑到中文对于国人的易读性及团队中英语水平的参差不齐,所以我就决定跟一遍,看看他到底是哪里出的问题。
过程
没想到过程居然一波三折,但好在最后让我找到了!
首先,通过百度和官方git库及文档,但由于本人英文水平极差,找了一圈没啥收获,于是开始翻源码。
时间原因,具体过程日后再补
结果
根据上一章配置完后,他的git cz执行流程应该为:
git cz生成.git/COMMIT_EDITMSG文件,里面有本次提交的commit内容:
之后会调用如下图所示的函数来解析:
解析结果:
这里如果是Feature(/):初始化项目这样的文本,那他就能被正确解析,如下所示:
最后再根据这个解析结果来进行后续判断等一系列操作。
打印后面的opts变量,可以发现,他的结构中有headerPattern参数,根据名称可以知道是解析header用的。
于是,在我一顿猛如虎的操作后,我确定了就是这个!
我在此处打印了一下这个可疑的家伙:
果然:
这个值是可以配置的!
当然,打印之前你的commitlint.config.js文件内容应该如下:
之后把此文件修改为:
即可。
修改完后再次输出opts中那个结构可以发现:
尝试提交,结果如下:
可以看到提交了两次都是没问题的…(为什么两次呢,因为第一次提交的时候不知道为什么单双引号没修正…)
错误提交截图:
因为目前不怎么用git,所以没有发现什么BUG,后续有什么bug出现我会及时更新在此文后。
本人于慕课网首发:关于commitlint提交不支持中文的探讨
后整理成此文。
更新
2022/01/24 23:20分更新
今日,在整理项目(重写前文)时,发现这个东西不好使了。因为本人有个习惯,在项目初期,任何配置出了点问题,就会重置整个项目。于是,就发现了这个问题。
经过细致的研究,我发现是这个配置不知道为何没有生效,依旧使用的是默认配置。
此时,我是使用npm install --save-dev @commitlint/config-conventional@12.1.4 @commitlint/cli@12.1.4安装的包依赖
在百思不得其解之后,遂决定直接把默认配置改了。
位置如下:
在再次的测试之后,我发现,上文原本的配置拿掉也会报错?!
不管为何,建议两个都加上,不然只加某一个要排问题怪麻烦的。当然你也可以使用英文。
此修改有利有弊:
利:简单粗暴,万事大吉。
弊:修改麻烦
各位自己权衡。当然之前那法子能用最好。