文件路径:VUE3.0源代码scripts/verifyCommit.js当我们在命令行输入gitcommit-m"描述信息"提交代码时,就会触发这个文件。关键的配置信息还是在文件package.json中,具体如下:知识点-1:如何获取我们输入的描述信息?Answer-1:通过process.env.GIT_PARAMS读取git保存描述信息的文件。大致路径如下:.git/COMMIT_EDITMSG知识点-2:如何控制输入描述信息的格式?Answer-2:通过一个看起来很NB但是很容易理解的正则表达式实现,如下:/^(revert:)?(feat|fix|docs|dx|style|refactor|perf|test|workflow|build|ci|chore|types|wip|release)(\(.+\))?:.{1,50}/大致可以分为以下3个部分:(1)开头固定关键字——用于确定这次提交的概要信息:revert|feat|fix|docs|dx|style|refactor|perf|test|workflow|build|ci|chore|types|wip|release(2)中括号+冒号+空格(一般描述修改括号中Modulename)-->fix(modulename):_(3)输入一些描述信息。这个正则句感觉意义不大。{1,50}常规小数点。:可以匹配除换行符(/n)之外的任何字符正则{m,n}:表达式至少重复m次,最多重复n次,例如:“ba{1,3}”可以匹配“ba”或"baa"or"baaa"具体源码如下://由yorkie在commit-msggithook上调用。/**控制台日志注解样式*/constchalk=require('chalk')/***通过GIT_PARAMS目录读取保存gitcommit时输入的描述信息的文件,一般路径如下:.git/COMMIT_EDITMSG*/constmsgPath=process.env.GIT_PARAMS/**读取.git/COMMIT_EDITMSG文件信息*/const味精=要求('fs').readFileSync(msgPath,'utf-8').trim()/***验证提交信息格式*示例:fix(runtime-core):checkifthekeyisstringonundefinedpropertywarning(#1731)*第1部分-开始关键字:revert|feat|fix|docs|dx|style|refactor|perf|test|workflow|build|ci|chore|types|wip|release*第2部分-括号+冒号+空格(修改模块的名称一般在括号中描述)*part3-输入一些描述信息。{1,50}*/constcommitRE=/^(revert:)?(feat|fix|docs|dx|style|refactor|perf|测试|workflow|build|ci|chore|types|wip|release)(\(.+\))?:.{1,50}/if(!commitRE.test(msg)){console.log()安慰。error(`${chalk.bgRed.white('ERROR')}${chalk.red(`无效的提交消息格式。`)}\n\n`+chalk.red(`自动化需要正确的提交消息格式更改日志生成。示例:\n\n`)+`${chalk.green(`feat(compiler):添加'comments'选项`)}\n`+`${chalk.green(`fix(v-model):处理模糊事件(close#28)`)}\n\n`+chalk.red(`See.github/commit-convention.md了解更多。\n`))process.exit(1)}如果你对“前端源码”情有独钟,可以微信扫码关注下方二维码公众号,内容不断更新中!目前VUE3.0源码正在分析中,欢迎加入!也欢迎加我个人微信进行交流。
