git-cz git commit 定制提交规范

git commit规范定制

步骤1: 安装 commitizen cz-emoji(表情符)

npm i commitizen cz-emoji --save

步骤2:打开package.json 拷贝下面代码
定义命令package.json 的 script中
“commit”: “git-cz”

 #拷贝到你的package.json
  "config": {
    "commitizen": {
      "path": "./node_modules/cz-emoji"
    }
  },
  "gitHooks": {
    "commit-msg": "node ./scripts/verifyCommitMsg.js"
  },

不难看出我们用了git 的钩子 commit-msg git钩子

其实大概思路就是我们再git commit的时候给执行一个node脚本verifyCommitMsg,通过的就让提交。 没有按照咱们指定的规范的一律拦截并让给他提示 让他纠正他的commit

步骤3:新建verifyCommitMsg.js 可以看下上面咱们的package.json中的 “node ./scripts/verifyCommitMsg.js”
就是咱们校验的nodejs脚本
注意你存放的路径

const chalk = require('chalk');
const msgPaths = process.env.GIT_PARAMS;
let msg = require('fs')
  .readFileSync(msgPaths, 'utf-8')
  .trim();
  

//const commitRE = /^(revert: )?(feat|fix|docs|style|refactor|perf|test|workflow|ci|chore|types)(\(.+\))?: .{1,50}/;
const commitRE = /^(:\w{3,50}:.{3,30})/;
if (msg.includes('Merge branch')) {
  // 自动合并不加验证
} else {
  console.log(`提交信息是:${chalk.green(msg)}`);
  if (!commitRE.test(msg)) {
    console.log(msg);
    console.error(
      `  ${chalk.bgRed.white(' ERROR ')} ${chalk.red(`提交信息不合法.`)}\n\n` +
        chalk.red(
          `  为了最终生成好的CHANGELOG,需要好好书写提交信息. 例如:\n\n`
        ) +
        `    ${chalk.green(`:类型表情:[类型] (范围) 提交主题`)}\n` +
        `    ${chalk.green(
          `:类型表情:[类型] (2-30个字母数字_-) (提交主题,提交内容一共5-200个中英文数字字母特殊符号)`
        )}\n` +
        `    ${chalk.green(`:sparkles:[feature] (all) 添加提交工具`)}\n\n` +
        chalk.red(`  See .github/COMMIT_CONVENTION.md for more details.\n`) +
        chalk.red(
          `  你可以运行 ${chalk.cyan(`npm run commit`)}按照提示生成提交信息.\n`
        )
    );
    process.exit(1);
  } else {
    console.log(
      `${chalk.green('恭喜你提交通过🍉。养成好的提交习惯,开启生活新高度')}`
    );
  }
}

代码解释
1、chalk 其实就是一个npm包 能给咱们打印出亮眼的console chalk文档
2、利用process.env.GIT_PARAMS 找到目录,读取msg 说明,进行检查。
3、读取到咱们提交的msg
4、正则校验 通过的就让提交 没通过的就 process.exit(1)强制进程退出
5、没通过的给出提示 让执行 npm run commit
6、commitRE 现有的规则是: 必须以 :开头+字母或者数字(位数大于3,小于50)+ :+ 任意字符(3,30)个
7、为什么执定这个样的正则校验(:🐛 (all)) 也是为了匹配cz-emoji

当你没通过校验是这个样的
就是你执行 git commit -m ‘feat: 删除没用的console’ 触发如下

在这里插入图片描述

会提醒你执行 npm run commit 其实就是咱们上面定义的指令git-cz

git-cz 回车执行下一个

流程1:Select the type of change you’re committing: (Use arrow keys or type to search) 选择要提交的更改类型:(使用方向键或type进行搜索)
就是让你选一个你想要提交的类型分为 fix、feature…在这里插入图片描述
流程2:Specify a scope 指定一个范围
就是让你输入一个提交的范围在这里插入图片描述
流程3:Write a short description 写一篇简短的描述
就是让你写你提交的代码是改了什么
在这里插入图片描述

当你按照提示执行后通过了是这个样的(如下图),然后你就可以往远端仓库推送了

在这里插入图片描述

当然咱们可能有的人是真的不想执行咱们的 npm run commit 流程 可以使用 git commit -m ‘feat: 删除没用的console’ -n
再后面加上一个 -n no-checkout

再vue中是尤大大帮咱们内置了一些git 的钩子(yorkie),咱们才可以再什么不需要做的时候使用这些个钩子做拦截(gitHook);
咱们再其他不是vue的项目中,下载一下咱们尤大大的这个npm包就行了。或者用husky ;
youkie实际是fork husky,然后做了一些定制化的改动

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值