前端提交信息规范 commit规范 commitlint husky commitizen

news2025/1/15 6:57:00

前端提交规范 约定式提交

  • 约定式提交
  • 安装commitizen 及其适配器
  • husky + commitlint 提交校验
  • 至此恭喜你已经配置好提交校验了,快去试试吧

技术同学开发中有没有出现 :
因某种原因当需要回滚,这时候一看之前提交的massage真的乌烟瘴气 无法分辨回滚到哪次提交
当我们版本update的时候,开发了很多功能历时一个月准备上线了,领导突然过来让你整理一下这次更新details发给他,一个月内的修改你是否会有忘记的呢,小朋友
如果你使用了约定式提交 那你就不会出现这种问题

约定式提交

网站介绍
限制团队提交massage的内容 当其他同事尝试 commit -m "2023/1/11" 这样的提交内容时就会给他友好的提示不让他提交 。 通常很多人在提交 git 信息的时候,为了图方便,大多都会简单的写一些奇怪的描述,开发一时爽,维护火葬场
当你使用了提交规范也会让你的项目逼格更高一点

下面我们看下尤大大团队的vue2仓库提交是否简介明了呢,我们动手体验一把尤大大同款约定式提交
在这里插入图片描述

安装commitizen 及其适配器

  • 安装规范化提交插件

npm install -g commitizen cz-conventional-changelog

  • 配置适配器

echo ‘{ “path”: “cz-conventional-changelog” }’ > mac用户
echo { “path”: “cz-conventional-changelog” } > C:\Users\你的账号.czrc windows用户

  • 至此,第一步全局安装Commitizen完成。在任何一个git仓库中运行git cz,就可以通过Commitizen来填写commit message完成提交。
你可以尝试修改一些东西然后去提交他
提交的时候别用commit -m 我们先用git cz 来感受一些东西
// 选择你的提交类型  每个类型什么意思看网站(https://www.conventionalcommits.org/zh-hans/v1.0.0)
? Select the type of change that you're committing: (Use arrow keys)
> feat:     A new feature
  fix:      A bug fix
  docs:     Documentation only changes
  style:    Changes that do not affect the meaning of the code (white-space, formatting, missing semi-colons, etc)
  refactor: A code change that neither fixes a bug nor adds a feature
  perf:     A code change that improves performance
  test:     Adding missing tests or correcting existing tests
(Move up and down to reveal more choices)

// 对某些模块有影响 回车下一步
What is the scope of this change (e.g. component or file name): (press enter to skip)
// 简短描述
Write a short, imperative tense description of the change (max 90 chars):
// 长描述
Provide a longer description of the change: (press enter to skip)
// 有什么突破性的变化吗
Are there any breaking changes?
// 是否改变了issues
Does this change affect any open issues?
  • 提交的类型约定式提交网站有介绍的哦
  • 这里提交如果你选择了Does this change affect any open issues? 当你push之后时候会把你的与i写issues一起关闭掉

husky + commitlint 提交校验

npm 版本须大于等于 7.24.2,过低的话可能会导致下面有的命令无法使用
commitlint 结合 husky 可以在 git commit 时校验 commit 信息是否符合规范

  • 安装 husky

npm i husky -D // 安装husky
npx husky install // 初始化husky
npm set-script prepare “husky install” // 写入script脚本
npx husky add .husky/pre-commit “npm test” // 创建一个hook 再commit-m 前置执行个npm 命令

在上面这些操作中创建了.husky文件夹 创建了pre-commit 文件 里面内容为npm test"
pre-commit 文件是git 的hooks 在提交之前会触发
git 的hooks官网介绍

.husky中的pre-commit文件和script中的prepare命令可以删了

  • 安装 commitlint
npm i @commitlint/config-conventional @commitlint/cli -S
npx husky add .husky/commit-msg 'npx --no-install commitlint --edit ${1}'  // 配置校验提交信息钩子
// 创建.commitlintrc.js配置文件内容如下 自定义提交内容约束
module.exports = {
// 继承的规则
extends: ["@commitlint/config-conventional"],
// 定义规则类型
rules: {
  // type 类型定义,表示 git 提交的 type 必须在以下类型范围内
  "type-enum": [
    2,
    "always",
    [
      "feat", // 增加新功能
      "fix", // 修复 bug
      "add", // 增加代码逻辑
      "del", // 删除功能
      "update", // 更新功能
      "docs", // 文档相关的改动
      "style", // 不影响代码逻辑的改动,例如修改空格,缩进等
      "build", // 构造工具或者相关依赖的改动
      "refactor", //  代码重构
      "revert", // 撤销,版本回退
      "test", // 添加或修改测试
      "perf", // 提高性能的改动
      "chore", // 修改 src 或者 test 的其余修改,例如构建过程或辅助工具的变动
      "ci", // CI 配置,脚本文件等改动
    ],
  ],
  // subject 大小写不做校验
  "subject-case": [0], 
},
plugins: [
  {
    rules: {
      "commit-rule": ({ raw }) => {
        return [
          /^\[(feat|fix|add|del|update|docs|style|build|refactor|revert|test|perf|chore)].+/g.test(raw),
          `commit备注信息格式错误,格式为 <[type] 修改内容>,type支持${types.join(",")}`,
        ];
      },
    },
  },
],
};

上面.commitlintrc.js文件是你的自定义配置 对提交内容的约束

  • 测试提交内容
修改一个文件
git add .
git commit -m "xxxx"
// 如果出现了提交信息不对恭喜你就完成了配置

如果出现了·Error [ERR_REQUIRE_ESM]: require() of ES Module·的报错 说明你的项目不支持 require 模块 将 package.json 文件 “type”: “module” 去掉

  • standard-version(自动生成日志,push后会自动打tag)
    npm install standard-version --save-dev
    npm set-script release "standard-version"
    npm run release
    
    // 功能1:会自动生成changelog日志文件 这里面会记录你的的哪个版本修改新增修复了哪些功能
    // 功能2:会自动升级版本号 如果没有中大版本更新更新最后一位 如果有重大版本更新 就倒数第二位更新
    // 当你根据提示push的时候还会帮你打tag
    

至此恭喜你已经配置好提交校验了,快去试试吧

如果实在觉得麻烦的朋友可以去下载我的 vite+vue3+ts的仓库已经配置好了哦
1 安装commitizen 上面有步骤
2 下载代码 github

春节将至 小吕在杭州祝大家新年快乐 -小吕 2023-1-11

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

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

相关文章

使用ResNet50实现CIFAR100数据集的训练

如果对你有用的话&#xff0c;希望能够点赞支持一下&#xff0c;这样我就能有更多的动力更新更多的学习笔记了。&#x1f604;&#x1f604; 使用ResNet进行CIFAR-10数据集进行测试&#xff0c;这里使用的是将CIFAR-10数据集的分辨率扩大到32X32&#xff0c;因为算力相关的…

蓝桥杯2019年第十届省赛C++B组

文章目录A&#xff1a;组队&#xff08;5分 √&#xff09;B&#xff1a;年号字串&#xff08;5分 √&#xff09;C: 数列求值&#xff08;10分 √&#xff09;D: 数的分解&#xff08;10分 &#xff09;F: 特别数的和&#xff08;15分 √&#xff09;A&#xff1a;组队&#x…

【蓝桥杯简单篇】Python组刷题日寄Part05

刷题日记&#xff1f;刷题日寄&#xff01; 萌新备战蓝桥杯python组 &#x1f339; 发现有需要纠正的地方&#xff0c;烦请指正&#xff01; &#x1f680; 欢迎小伙伴们的三连关注&#xff01; 往期系列&#xff1a; 【蓝桥杯简单篇】Python组刷题日寄Part01 【蓝桥杯简单篇】…

Oracle Mysql审计日志等保测评

mysql oracle的审计日志 mysql的审计日志说是有两种方法&#xff0c;一种是需要安装插件模式的审计&#xff0c;一种直接开一个参数 1.安装插件模式 一、 mysql 日志 配置永久配置 &#xff1a; 保存时间及大小 https://blog.csdn.net/m0_51197424/article/details/12432840…

设计模式(二)----软件设计原则

在软件开发中&#xff0c;为了提高软件系统的可维护性和可复用性&#xff0c;增加软件的可扩展性和灵活性&#xff0c;要尽量根据7条原则来开发程序&#xff0c;从而提高软件开发效率、节约软件开发成本和维护成本。 1、单一职责原则 ( 核心&#xff1a;尽量保证类&#xff0…

毫米波雷达和视觉融合的学习路线

了解各个传感器的成像原理&#xff0c;知其所以然&#xff0c;同时了解每种传感器的对比及优缺点&#xff0c;为什么要用这几种融合&#xff0c;可以通过去看一些德州仪器的雷达原理视频&#xff08;b站&#xff09;&#xff0c;雷达工作手册等。先广而后深&#xff1a;了解经典…

C#-WPF介绍-创建项目-添加按钮等及其事件处理、属性设置

微软官网指导链接&#xff1a;适用于 .NET 5 的 Windows Presentation Foundation 文档 | Microsoft Learn WPF框架介绍&#xff1a;Windows Presentation Foundation 简介 - WPF .NET | Microsoft Learn WPF介绍 WPF&#xff08;Windows Presentation Foundation&#xff09…

python3在window上运行或安装模块各种问题

1. 在window上运行celery各种奇怪的问题 如出现错误&#xff1a; ValueError: not enough values to unpack (expected 3, got 0) 请先安装如下模块 pip install eventlet 启动时&#xff0c;带上改模块&#xff0c;指定为运行参数 celery -A tasks worker --loglevelinfo -P …

基于小程序云开发的智慧物业、智慧小区微信小程序,在线报修报检,重大事项投票,报名参加小区活动,小区公告通知,业委会公示、租售房屋

功能介绍 完整代码下载地址&#xff1a;基于小程序云开发的智慧物业、智慧小区微信小程序 当前小区的物业事务越来越多、越来越杂&#xff0c;而很多业主工作繁重&#xff0c;加班很晚&#xff0c;以往对于重大事项投票&#xff0c;报修报检&#xff0c;装修申请&#xff0c;…

大数据技术之SparkSQL(超级详细)

第1章 Spark SQL概述 1.1什么是Spark SQL Spark SQL是Spark用来处理结构化数据的一个模块&#xff0c;它提供了2个编程抽象&#xff1a;DataFrame和DataSet&#xff0c;并且作为分布式SQL查询引擎的作用。 它是将Hive SQL转换成MapReduce然后提交到集群上执行&#xff0c;大大…

易盾滑块再再再试

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录前言文章推荐自己的坑js部分效果展示前言 声明&#xff1a;本文只作学习研究&#xff0c;禁止用于非法用途&#xff0c;否则后果自负&#xff0c;如有侵权&#xff…

php宝塔搭建部署实战响应式自动化设备科技企业网站源码

大家好啊&#xff0c;我是测评君&#xff0c;欢迎来到web测评。 本期给大家带来一套php开发的响应式自动化设备科技企业网站源码&#xff0c;感兴趣的朋友可以自行下载学习。 技术架构 PHP7.2 nginx mysql5.7 JS CSS HTMLcnetos7以上 宝塔面板 文字搭建教程 下载源码&…

我眼中的偶数数据库 OushuDB

各位大家好&#xff0c;在论坛跟大家学习也有一段时间了&#xff0c;今天来聊聊我眼中的偶数数据库 &#xff5e; 首先&#xff0c;先来介绍介绍我和偶数的故事&#xff08;其实没有什么故事&#xff0c;只是一些交集片段&#xff09;。 2015 年我开始接触 Greenplum&#xf…

Spring Boot 配置文件

Spring Boot 配置文件一、配置文件作用二、配置文件的格式三、properties 配置文件说明3.1 properties 基本语法3.2 读取配置文件3.3 properties 优缺点分析四、yml 配置文件说明4.1 yml 优点分析4.2 yml 基本语法4.3 yml 基本配置读取4.4 配置对象与读取4.5 配置集合与读取五、…

时序预测 | Python实现XGBoost极限梯度提升树股票价格预测

时序预测 | Python实现XGBoost极限梯度提升树股票价格预测 目录 时序预测 | Python实现XGBoost极限梯度提升树股票价格预测预测效果基本描述环境配置模型描述程序设计参考资料预测效果 基本描述 Python实现XGBoost极限梯度提升树股票价格预测 环境配置 XGboost (0.7) numpy (1.…

负载均衡器Ribbon原理及实战演练

目录 一、负载均衡原理 二、Ribbon 原理及使用 三、Loadbalancer 原理及使用 负载均衡器Ribbon在微服务领域是很常用的服务调用、负载均衡的中间件,其面包含Loadbalancer专门负载负载均衡&#xff1b;比如Eureka、Fegin,Nacos的注册中心jar包里面均包含Ribbon相关的jar,如图…

python实战案例:采集某漫客《网游之近战法师》所有章节

前言 嗨喽~大家好呀&#xff0c;这里是魔王呐 ❤ ~! 环境使用: Python 3.8 Pycharm 模块使用: requests >>> pip install requests 数据请求模块 parsel >>> pip install parsel 数据解析模块 如果安装python第三方模块: win R 输入 cmd 点击确定, 输…

C++学习之旅 第五章(字符应用:小写字母转大写字母)

开头&#xff1a; 上一节我们讲了关于char类型许多知识&#xff0c;今天我们来更深层的学习一下字符实际上面的应用&#xff01; ASCII码简介&#xff1a; 我们要进行字符的应用&#xff0c;首先就是要了解一下ACSII码: ASCII(全名&#xff1a;American Standard Code for Inf…

win10如何安装多个jdk并实时进行切换【建议收藏】

在windows10的系统中&#xff0c;如何安装jdk或者安装多个jdk版本&#xff0c;博主在这里整理了一份非常完美的jdk版本安装教程&#xff0c;且jdk版本可以随时切换&#xff0c;切换过程不超过10秒&#xff0c;让你在jdk版本中穿梭自如&#xff0c;直接可以食用&#xff0c;掌握…

【前端】ES6

let 和 const 类似var定义变量&#xff0c;但是let修饰的变量仅在声明的代码块中有效&#xff1b; var声明的变量&#xff0c;在全局有效 for (let i 0; i < 3; i) {let i abc;console.log(i); }js中的for循环声明循环变量的部分也作为一个父作用域&#xff0c;即(let i…