commit message 是开发的日常操作, 好的 log 不仅有助于他人 review, 还可以有效的输出 CHANGELOG, 对项目的管理实际至关重要, 但是在平时工作时,只依赖大致的开发规范和自觉,很难形成一种普遍约束。而通过本文,对项目进行一些基础配置,让开发者在提交时可以自动对提交作出规范

1,项目效果

代码提交

2,自动生成commit 日志

2,配置

依赖包

npm i vue-cli-plugin-commitlint commitizen commitlint conventional-changelog-cli husky -D

配置package.json

{"scripts": {"log": "conventional-changelog --config ./node_modules/vue-cli-plugin-commitlint/lib/log -i CHANGELOG.md -s -r 0","cz": "npm run log && git add . && git cz"},"husky": {"hooks": {"commit-msg": "commitlint -E HUSKY_GIT_PARAMS"}},"config": {"commitizen": {"path": "./node_modules/vue-cli-plugin-commitlint/lib/cz"}}
}

配置文件commitlint.config.js

module.exports = {extends: ['./node_modules/vue-cli-plugin-commitlint/lib/lint']
};

使用:

npm run cz  # git add . && git commit -m 'feat:(xxx): xxx'
npm run log # 生成 CHANGELOG 

官方文档:

vue-cli-plugin-commitlint​www.npmjs.com

3,各个包的作用解释

根据上面的配置,已经可以给项目配置提交的规范了。如果只是想应用,那么后面的各个包的功能解释部分可以选看。

  1. husky
  2. commitizen
  3. commitlint
  4. conventional-changelog-cli

husky: git命令时,自定义指定一些动作

// package.json
{"husky": {"hooks": {"pre-commit": "npm test","pre-push": "npm test","...": "..."}}
}
// commit之前会走 test
// push之前会走 test

commitlint

可以帮助我们 lint commit messages, 如果我们提交的不符合指向的规范, 直接拒绝提交, 比较狠.

commitizen

我们需要借助它提供的 git cz 命令替代我们的 git commit 命令, 帮助我们生成符合规范的 commit message

conventional-changelog-cli

根据git的metadata生成changelog

所以,回看一下刚才的package.json

{"scripts": {"log": "conventional-changelog --config ./node_modules/vue-cli-plugin-commitlint/lib/log -i CHANGELOG.md -s -r 0","cz": "npm run log && git add . && git cz"},"husky": {"hooks": {"commit-msg": "commitlint -E HUSKY_GIT_PARAMS"}},"config": {"commitizen": {"path": "./node_modules/vue-cli-plugin-commitlint/lib/cz"}}
}

当输入yarn cz时,

0, 首先生成log

1,走命令git cz。生成commit message

2,husky检查commit-msg: commitlint -E HUSKY_GIT_PARAMS

3, 校验完成后,自动提交

git push被拒绝_规范git项目提交并自动生成项目commit log相关推荐

  1. vue 打印出git提交信息_规范git项目提交并自动生成项目commit log

    commit message 是开发的日常操作, 好的 log 不仅有助于他人 review, 还可以有效的输出 CHANGELOG, 对项目的管理实际至关重要, 但是在平时工作时,只依赖大致的开发规 ...

  2. “ u”到底是做什么的? “ git push -u原始主机”与“ git push原始主机”

    本文翻译自:What exactly does the "u" do? "git push -u origin master" vs "git pus ...

  3. c 自动生成html文件,webpack4系列教程(三):自动生成项目中的HTML文件

    1. webpack中的CommonJS和ES Mudule 规范 1.1 CommonJs规范 CommonJs规范的出发点:JS没有模块系统.标准库较少.缺乏包管理工具:为了让JS可以在任何地方运 ...

  4. (十五)Alian 的 Spring Cloud 自动生成项目

    目录 一.创建 1.1.第一步 二.mvn命令 三.生成项目 3.1.配置 3.1.属性配置 3.2.控制层 3.3.服务层 四.验证 4.1.请求生成项目 4.2.生成项目结果 4.3.项目结构 一 ...

  5. 【在web项目jsp页面自动生成二维码功能】

    在web项目jsp页面自动生成二维码功能 原文: http://www.cnblogs.com/gczmn/. https://www.jq22.com/jquery-info294/. 先将下面的文 ...

  6. JHipster自动生成项目

    JHipster自动生成项目 1. 前提条件 2. 生成过程 3. 最终生成项目 推荐学习地址: 推荐教程 中文官网地址 1.前提条件 需要安装内容: npm.NodeJS.Yeoman.JHipst ...

  7. 如何生成像素墨镜,大烟卷?Thug Life风格自动生成项目

    文章来源:ATYUN AI平台 暴徒生活(Thug Life)是一款非常火热的P图特效,通过加上此特效会让用户的视频或者照片变的非常有趣好玩.其拥有大量贴纸.滤镜效果.视频过渡效果等,使你的视频或照片 ...

  8. IDEA中Maven创建webapp项目时不能自动生成src、webapp目录解决【手动添加】

    首先,我标题为什么说必看呢,是因为我因为创建web项目时没有自动生成src目录.webapp目录,也不知道我为什么一定要让去自动生成呢?反正就是去看了很多"大佬"的文章,也尝试了很 ...

  9. .md文件自动生成项目目录结构

    自动生成项目目录结构 1)安装mddir (-g是全局安装,可以选择不全局安装,这里因为以后都要使用所以选择的全局安装) npm install mddir -g 2)cd 到你想生成目录的工程结构, ...

最新文章

  1. GDB 调试 Mysql 实战(二)GDB 调试打印
  2. 结构化道路上车辆自动驾驶中的雷达类型及安装位置
  3. cocos2d-html5 onEnter init ctor构造函数 ----js特有特性(和c++有一点不一样)
  4. 【Spring】Spring注解配置okhttp3
  5. linux6 rac 11g,oracle linux 6.操作系统oracle 11g rac
  6. 免费领取WPS会员15天和WPS稻壳会员15天!新老用户均可领取。
  7. 用Python做图片分类:前置处理,图片的缩小保存
  8. 把Wordpress集成到zen-cart里方法 各种修改 经典机制
  9. Java学习成长路径
  10. 华为路由器怎么看是不是公网_华为路由器怎么判断有没有被蹭网
  11. vc 文字转换到机内码,输入汉字和数字, 输出一串16进制码(数字-〉ASII码,汉字—〉国标码)...
  12. 【夏目鬼鬼分享】StringBoot整合RabbitMQ,使用Direct、Fanout、Topic三种模式
  13. 有趣的小游戏——猜数字
  14. YOLO系列网络训练数据准备工具—Yolo_mark
  15. 万龙机器人_星辰血途-108.百年仇恨(4)万龙朝苍-爱阅小说网
  16. JS数据库:手机处理器列表
  17. 重置计算机网络设置路由器,路由器怎么重置 2种路由器重置方法
  18. 电力电子技术课程实验:实验一、DC/DC直流斩波电路制作与性能测试
  19. 6.6.6 低保救助记录
  20. JAVA中的检查型异常和非检查型异常

热门文章

  1. [转]想要成为一名优秀的Java程序员,这份文档必读
  2. Android实战:手把手实现“捧腹网”APP(三)-----UI实现,逻辑实现
  3. 【专升本计算机】2021年甘肃省专升本计算机全真模拟试题(四)
  4. 【MATLAB统计分析与应用100例】案例005:matlab调用medfilt1函数对加噪正弦波信号进行平滑处理
  5. C#ListView控件添加复选框并获取选中的数目
  6. Java之new一个对象简单过程
  7. python带通配符的字符串匹配_Bash技巧:实例介绍数个参数扩展表达式以处理字符串变量...
  8. 什么就像谈恋爱一样?
  9. 今晚包饺子吗?会露馅的那种......
  10. 当女朋友问你会不会出轨的时候,该怎么回答?