husky结合commitlint审查commit信息

news2024/9/29 13:29:49

commintlint是一个npm包用来规范化我们的commit信息,当然这个行为的操作时期是在git的commit-msg生命周期期间,这一点当然是有husky来控制,需要注意的是commit-msg作为一个git生命周期会被git commit和git merge行为唤醒,并且可以通过git命令后缀跳过这一生命周期

一、准备工作

1.下载一下commitlint

npm install --save-dev @commitlint/config-conventional @commitlint/cli

 这个命令下载了两个东西,@commitlint/cli实际上是commintlint的别名,就是包的本体,@commitlint/config-convebtional实际上是默认的配置,后面会在配置表中extend字段进行注入

2.配置一下commintlint

这边的话我直接贴一下网上找来的配置,创建commitlint.config.js,并写下如下内容(网上找的,暂时看看)

export default {
    extends: ['@commitlint/config-conventional'],
    rules: {
      "type-enum": [2, 'always', [
        'feat', 'fix', 'docs', 'perf', 'revert', 'ci', 'test', 'refactor', 'build', 'style', 'chore'
      ]],
      'type-case': [0],//type 的输入格式,默认为小写‘lower-case’
      'type-empty': [0],//type 是否可为空
      'scope-empty': [0],//scope 是否为空
      'scope-case': [0],//scope 的格式,默认为小写‘lower-case’
      'subject-full-stop': [0, 'never'],//subject 结尾符,默认为.
      'subject-case': [0, 'never'],//subject 的格式,默认其中之一:['sentence-case', 'start-case', 'pascal-case', 'upper-case']
      'header-max-length': [0, 'always', 72]//header 最大长度,默认为72字符
    },
  };
  

3.创建husky的commit-msg钩子

我是分了两个步骤

npx husky add .husky/commit-msg

然后在这个钩子中写入

npx --no -- commitlint --edit

二、尝试一下写一个错误的提交

git commit -m "testhh"

看一下有什么错误

我们的commintlint果然很严格呢

三、什么才是合格的提交

我们可以看一下@commitlint/config-conventional这个默认配置的npm页面上是怎么写的

说明一下我们上面的commitlint.config.js之中配置应该是自定义部分和@commitlint/config-conventional这个配置的融合版本

下面借一张图说一下每个项的一些配置涉及什么内容

 上图是一个type-enum的配置,我们要配置的内容其实是value中的,condition代表了生效条件,也就是你的msg的类型一定要是在value之中,rule表示应该是检测的时机,这里是永远需要检测,level应该决定的是违反该规则是否报错,这样的话我们就能更好理解配置中每个内容了,这里其他配置默认配置我就不多说了。

那我们看一下我们写的commitlint.config.js里面的一些内容是啥意思

单说下面这个规则

"type-enum": [2, 'always', ['feat', 'fix', 'docs', 'perf', 'revert', 'ci', 'test','refactor', 'build', 'style', 'chore']]

type-enum我们在上面见到过,它的value是一个数组,为啥这里的值是三个呢,前面那个2和always是啥意思?

实际上每个规则都有三个参数

level表示层级,0表示取消该规则,1表示违反该规则会导致warning,2表示违反规则会抛出一个错误

applicable的值则表示是否逆转这个规则,如 type-enum如果第二个参数写上never,则你提交的msg的type必须不在value的范围之内。

第三个value就是正常的value。

那么我们重看上面的我们在网上找的commitlint.config.js,里面的内容实际上就是取消了@commitlint/config-conventional这个默认配置表的一些规则,这样的话,我觉得如何定制自己的配置大概就有数了。

四、一个完整的正确的提交信息例子

build: 进行一次提交测试

    这里是提交信息的body部分

    这个我不知道干什么的footer部分

注意这个“build:"后面有一个空格一定要写,你不写就提示你缺少subject

git有一个提交约定,可以看约定式提交

上面这个网页有详述 ,这样的话就可以理解上面的那些fix等等到底意味着什么,这里我就不写了

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1413965.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

C++版QT:分割窗口

目录 mainwindow.h mainwindow.cpp main.cpp Qt的分割窗口功能允许用户将一个窗口分割成多个区域,每个区域可以独立地显示不同的内容。这种功能在许多应用程序中非常有用,例如编辑器、浏览器和IDE等。 理解Qt的分割窗口,需要从以下几个方面…

BOSS 直聘:日增10亿数据的历史库,如何通过OceanBase节省70%存储成本?

BOSS 直聘是在全球范围内首创互联网“直聘”模式的在线招聘产品,目前已经成为了中国最大的招聘平台。本文谈到的 BOSS 直聘的业务场景主要是通过数据库对招聘过程中的聊天记录信息进行存储,数据量极大,且每天都有 5 亿到 10 亿的增量数据。和…

蓝桥杯省赛无忧 编程13 肖恩的投球游戏

#include <iostream> #include <vector> using namespace std; int main() {int n, q;cin >> n >> q;vector<int> a(n 1);vector<int> diff(n 2, 0); // 初始化差分数组// 读取初始球数&#xff0c;构建差分数组for (int i 1; i < …

JVM-字节码应用

一、字节码的应用远超你的想象 二、ASM介绍与读取字节码实战 用CoreAPI解析和TreeAPI都能做字节码解析&#xff0c;区别&#xff0c;TreeAPI必须读取完整字节码信息&#xff0c;才能做解析。 下面代码&#xff0c;使用CoreAPI做解析&#xff1a; package asm;public class MyM…

牛客NC16640纪念品分组(C++)

题目链接 实现方法 本题为简单的贪心问题。 将所有纪念品价值排序&#xff1b;使用双指针判断最大和最小的价值之和是否小于上限&#xff0c;若小于上限则取两个&#xff0c;否则取价值较大的一个物品&#xff1b;记录未分组的纪念品数量&#xff0c;若数量为0则跳出循环&…

《PCI Express体系结构导读》随记 —— 第I篇 第3章 PCI总线的数据交换(5)

接前一篇文章&#xff1a;《PCI Express体系结构导读》随记 —— 第I篇 第3章 PCI总线的数据交换&#xff08;4&#xff09; 3.2 PCI设备的数据传递 PCI设备的数据传递使用地址译码方式&#xff0c;当一个存储器读写总线事务到达PCI总线时&#xff0c;在这条总线上的所有PCI设…

Java入门高频考查基础知识7-深入挖掘Java集合框架的奇幻世界2(39题2.8万字参考答案)

Java 集合是 Java 编程中至关重要的组成部分&#xff0c;它为开发者提供了丰富、灵活、高效的数据结构和算法。无论是初学者还是有经验的开发者&#xff0c;在使用 Java 进行编程时都会频繁地接触到集合框架。这篇文章将深入探讨 Java 集合的重要性&#xff0c;以及为什么它对于…

写静态页面——魅族声学_前端页面练习

1、效果: 1、html代码: <!DOCTYPE html> <html lang="en"> <head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>魅族声学</titl…

STM32单片机项目之多功能智能小车硬件设计

基于STM32单片机多功能智能小车功能说明&#xff1a; TFTLCD显示按键LVGL&#xff08;菜单、小车工作模式选择、设置&#xff09;手机蓝牙遥控模式射频手柄遥控模式5路红外寻迹模式超声波避障模式语音播报低功耗控制 硬件原理图设计 单片机最小系统&#xff1a; 由于要使用…

初识MQRabbitMQ快速入门

一、同步和异步通讯 微服务间通讯有同步和异步两种方式&#xff1a; 同步通讯&#xff1a;就像打电话&#xff0c;需要实时响应。 异步通讯&#xff1a;就像发邮件&#xff0c;不需要马上回复。 两种方式各有优劣&#xff0c;打电话可以立即得到响应&#xff0c;但是你却不能…

项目中日历管理学习使用

一些项目中会有日历或日期设置&#xff0c;最基本的会显示工作日&#xff0c;休息日&#xff0c;节假日等等&#xff0c;下面就是基于项目中的日历管理功能&#xff0c;要显示工作日&#xff0c;休息日&#xff0c;节假日 效果图 获取国家法定节假日工具类 public class Holi…

2024年,我与CSDN的邂逅之旅:一段燃烧激情、成就梦想的博客专家之路

文章目录 初入CSDN知识分享的本质什么有用学什么 成为博客专家的经历成为博客专家有什么好处实际好处隐形好处 今天获得了CSDN认证的博客专家&#xff0c;感觉很开心~分享一下这个始末。分享一下我和CSDN的5年邂逅。 初入CSDN 进入CSDN已经五年了&#xff0c;大一开始写博客&a…

Prometheus 架构全面解析

在本指南中&#xff0c;我们将详细介绍 Prometheus 架构。 Prometheus 是一个用 Golang 编写的开源监控和告警系统&#xff0c;能够收集和处理来自各种目标的指标。您还可以查询、查看、分析指标&#xff0c;并根据阈值收到警报。 此外&#xff0c;在当今世界&#xff0c;可观…

21.云原生之GitLab pipline语法实战(CI基础)

云原生专栏大纲 文章目录 gitlab-ci.yml 介绍GitLab中语法检测gitlab-ci.yml 语法job定义作业before_script和after_scriptstages定义阶段tages指定runnerallow_failure运行失败when控制作业运行retry重试timeout超时parallel并行作业only & exceptrulescache 缓存cache:p…

Windows10系统任务栏变小怎么处理

首先&#xff0c;邮件任务栏&#xff0c;点击任务栏设置&#xff1b; 然后&#xff0c;将小任务栏 使能关闭&#xff08;图中为打开状态&#xff09;&#xff1b; 或者&#xff0c;你也可以取消锁定任务栏&#xff0c;然后在任务栏的边缘&#xff0c;进行上下拉拖动&#xff…

记签名机制

签名过程&#xff1a; 首先将数据源通过摘要算法获取到数字摘要 对数字摘要用私钥进行加密得到签名 将原始消息 以及签名发送给消息接收方 接收方用公钥解密得到数字摘要 用同样的摘要算法将原始消息进行计算 比较得到的数字摘要与解密后的是否一致 Android学习笔记——Androi…

Android源码设计模式解析与实战第2版笔记(二)

第二章 应用最广的模式 — 单例模式 单例模式的定义 确保某一个类只有一个实例&#xff0c;而且自行实例化并向整个系统提供这个实例。 单例模式的使用场景 确保某个类有且只有一个对象的场景&#xff0c;避免产生多个对象消耗过多的资源&#xff0c;或者某种类型的对象只应…

水文模型SWMM与LisFlood耦合(pdf文档、软件见资源)

总技术路线图 INP生成图解 文献&#xff1a;面向服务的Web-SWMM构建研究 regardingINP为ArcGIS Pro项目 1.SWMM模型数据准备与参数设置 1.子汇水区 文件位于&#xff1a;beforeGenerateINP/generateSub.py&#xff08;一级划分&#xff09; 问题&#xff1a; 水文分析阈值划…

85 总结一下最近遇到的一些 jar发布 相关的知识

前言 呵呵 最近有一些构建服务, 发布服务的一些需求 我们这里的服务 一般来说是 java application, spring boot application 针对发布, 当然最好是 增量发布, 尽量的减少需要传递给 发布服务器 的资源的大小 比如 我的这个 java application, 可能会存在很多依赖, 常规…

Arduino开发实例-HTU21D温度和湿度传感器使用

HTU21D温度和湿度传感器使用 文章目录 HTU21D温度和湿度传感器使用1、HTU21D介绍2、硬件接线3、代码实现本文将详细介绍如何使用搭载来自瑞士 MEAS 的低成本、易于使用、高精度的HTU21D数字温度和湿度传感器模块。 1、HTU21D介绍 HTU21D传感器模块尺寸小,几乎可以安装在任何东…