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, 校验完成后,自动提交

vue 打印出git提交信息_规范git项目提交并自动生成项目commit log相关推荐

  1. git push被拒绝_规范git项目提交并自动生成项目commit log

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

  2. clone git 修改保存路径_用git管理版本,你必须知道的事情

    git是一个版本控制工具, 版本控制主要的好处有三点: 从当前版本回退到任意版本 查看历史版本 对比两个版本差异 git 相关术语 repository 仓库branch 分支summary 摘要tr ...

  3. git 删除分支_常用Git操作命令指南

    1.初始化git git init 2.下载git服务器上面的项目 git clone https://github.com/mrjade/reportng.git 3.配置git (1)查看git配 ...

  4. mysql三阶段提交实现_基于两阶段提交的分布式事务实现(UP-2PC)

    引言:分布式事务是分布式数据库的基础性功能,在2017年上海MySQL嘉年华(IMG)和中国数据库大会(DTCC2018)中作者都对银联UPSQL Proxy的分布式事务做了简要介绍,受限于交流形式难 ...

  5. .git文件夹_关于Git使用的(吐血)整理再也不用担心因为电脑故障而失去自己辛苦写下的论文或代码...

    微信公众号:MitchHong 作者:Mitch Hong 微信号:ASparkleSubscription; 目录 前言Git简介GitGit工作流程Git安装Git如何使用初始化常用命令git中的 ...

  6. git 切换分支_简单git操作

    首先设置用户基本信息设置 设置用户名 git config - -global user.name 'Hazel6869' 设置用户名邮箱 git config - -global user.name ...

  7. IntelliJ IDEA 怎么知道项目信息_如何重新打开已经移除的项目_如何关闭和删除项目

    文章目录 一个窗口只管理一个项目 如何打开已经移除的项目 Open 和 Import 的简单区别 关闭项目 如何删除项目 IDEA 怎么知道项目信息 这里要特别理解一个问题,硬盘上的项目文件必须在 I ...

  8. c++ 如何获取移动硬盘型号信息_工程销售,如何高效快速获取项目信息

    怎么获取工程信息,对于做建筑工程的销售来说,基本都知道,无非就是通过扫街.网上 搜索.购买第三方工程信息服务.或者他人介绍(亲朋好友.客户.同事.设计师等).在怎 么找项目信息方面?每个人都有自己的方 ...

  9. diff git 指定时间_【GIT】从指定分支两个Tag中获取差异文件,进行代码的增量更新...

    介绍 随着DevOps兴起,在做CD代码上线交付时候,代码全量更新是很费时间的.下面代码就可以帮助我们从指定分支两个Tag中获取差异文件,进行代码的增量更新. 环境 Jenkins Git代码管理 获 ...

最新文章

  1. Centos 7 安装 rabbitmq 3.6.6
  2. Oracle 11g 新特性 -- 只读表(read-only table)说明
  3. python并发入门(part5 event对象)
  4. 超图桌面版新建一个简单三维数据集并发布
  5. 【中文】Joomla1.7扩展介绍之eXtplorer(文件管理器)
  6. 在Tomcat中配配置数据源汇总
  7. 02-05 Python库-time datetime
  8. 传统汽车被“智能”打败?且看汽车进化的黄金十年!
  9. Quartus17报错Top-level design entity “dff“ is undefined的解决办法
  10. Java入门代码注释与编码规范(羊驼)
  11. Android 仿美团选择城市、微信通讯录、饿了么点餐列表的导航悬停分组索引列表
  12. C++ 整型转16进制字符串或16进制字符串转整型
  13. 2022自学kali linux学习笔记
  14. 华为NAT的命令总结
  15. 自己的神明——你只能成为自己
  16. Jetson Nano - 实现VNC远程桌面控制
  17. CMeKG代码解读(以项目为导向从零开始学习知识图谱)(一)
  18. 大一新生的pta错题归纳
  19. label fusion 学习记录
  20. PAT甲级 1071 说话方式

热门文章

  1. 丛高教授《空间数据管理和挖掘及在智慧城市的应用》演讲笔记
  2. MATLAB中的varargin,varargout在函数中运用
  3. mapreduce编程实例(2)-求最大值和最小值
  4. Python零碎知识(2):强大的zip
  5. python如何使用字典中的值并进行比较_python – 如何比较字典中的值?
  6. Matplotlib实例教程 | 句子长度累积分布函数图
  7. 如何快将数据集划分为train、val(Python3代码模板)
  8. 【Python刷题】_2
  9. Python编程基础:第四十节 类变量Class Variables
  10. python 模块(Module)和包