21vue3实战-----git husky和git commit规范

21vue3实战-----git husky和git commit规范

  • 1.husky工具
    • 1.1目的
    • 1.2如何做到这一点?
    • 1.3步骤
  • 2.git commit规范
    • 2.1使用Commitizen自动生成规范格式供选择
    • 2.2代码提交风格
    • 2.3代码提交验证

之前在https://blog.csdn.net/fageaaa/article/details/145474065文章中已经讲了在vue项目中怎么配置代码规范,下面将专门讲述git husky和git commit规范。

1.husky工具

虽然我们已经要求项目使用eslint了,但是不能保证组员提交代码之前都将eslint中的问题解决掉了。

1.1目的

  • 保证代码仓库中的代码都是符合eslint规范的;
  • 我们需要在组员执行 git commit 命令的时候对其进行校验,如果不符合eslint规范,那么自动通过规范进行修复;

1.2如何做到这一点?

  • husky是一个git hook工具,可以帮助我们触发git提交的各个阶段:pre-commit、commit-msg、pre-push

1.3步骤

在安装husky工具之前得确定电脑安装了git并且项目中有git仓库:
在这里插入图片描述
如果没有git仓库,需要使用以下命令来初始化自动创建一个.git文件夹

git init

之后我们可以使用自动配置命令:

npx husky-init && npm install

安装后package.json中会有相关依赖:
在这里插入图片描述
安装好之后项目会多一个.husky文件夹:
在这里插入图片描述
进入.husky/pre-commit文件夹:
在这里插入图片描述
发现里面执行的是npm test。把这个改为:

npm run lint

这样子系统会自动去package.json中找lint配置:
在这里插入图片描述这个时候我们执行git commit的时候就会自动对代码进行lint校验。

2.git commit规范

2.1使用Commitizen自动生成规范格式供选择

通常我们的git commit会按照统一的风格来提交,这样可以快速定位每次提交的内容,方便之后对版本进行控制。
但是如果每次手动来编写这些是比较麻烦的事情,我们可以使用一个工具:Commitizen。Commitizen 是一个帮助我们编写规范 commit message 的工具。
安装Commitizen:

npm install commitizen -D

安装cz-conventional-changelog,并且初始化cz-conventional-changelog:

npx commitizen init cz-conventional-changelog --save-dev --save-exact

安装好cz-conventional-changelog后,会自动在package.json中追加一个配置:
在这里插入图片描述
这个时候我们提交代码需要使用 npx cz
之前我们git commit时候需要自己注意一些规范,会像下面这样子提交:
在这里插入图片描述
但安装了commitizen之后,就不用这样子了。
执行命令git add .之后,执行npx cz,这时候会生成交互式命令供选择:
在这里插入图片描述这时查看提交日志:git log:
在这里插入图片描述
上面说明提交已经成功。
我们在package.json中进行可以进行配置:
在这里插入图片描述
这样子下次我们可以执行下面命令来提交:

npm run commit

2.2代码提交风格

如2.1中使用Commitizen自动生成了以下格式:
在这里插入图片描述
下面具体讲讲git commit中代码提交的规范。

  • 第一步是选择type,本次更新的类型
    在这里插入图片描述
Type作用
feat新增特性 (feature)
fix修复 Bug(bug fix)
docs修改文档 (documentation)
style代码格式修改(white-space, formatting, missing semi colons, etc)
refactor代码重构(refactor)
perf改善性能(A code change that improves performance)
test测试(when adding missing tests)
build变更项目构建或外部依赖(例如 scopes: webpack、gulp、npm 等)
ci更改持续集成软件的配置文件和 package 中的 scripts 命令,例如 scopes: Travis, Circle 等
chore变更构建流程或辅助工具(比如更改测试环境)
revert代码回退
  • 第二步选择本次修改的范围(作用域)
    在这里插入图片描述
  • 第三步选择提交的信息
    在这里插入图片描述
  • 第四步提交详细的描述信息
    在这里插入图片描述
  • 第五步是否是一次重大的更改
    在这里插入图片描述
  • 第六步是否影响某个open issue
    在这里插入图片描述

2.3代码提交验证

如果我们按照cz来规范了提交风格,但是依然有同事通过 git commit 按照不规范的格式提交应该怎么办呢?
我们可以通过commitlint来限制提交。
安装 @commitlint/config-conventional 和 @commitlint/cli:

npm i @commitlint/config-conventional @commitlint/cli -D

在根目录创建commitlint.config.js文件,配置commitlint:

module.exports = {extends: ['@commitlint/config-conventional']
}

可能会出现以下报错:
在这里插入图片描述
那就在.eslintrc.cjs文件中追加配置:
在这里插入图片描述
就可以解决该问题。
使用husky生成commit-msg文件,验证提交信息:

npx husky add .husky/commit-msg "npx --no-install commitlint --edit $1"

生成了commit-msg文件:
在这里插入图片描述
在这里插入图片描述
配置好之后,使用npx cz可以提交代码,使用git commit按照不规范的格式提交就不会生效。
不按规范提交代码:
在这里插入图片描述
按规范提交代码:
在这里插入图片描述

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

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

相关文章

Unity3D 类MOBA角色控制器 开箱即用

Github: Unity3D-MOBA-Character-Controller 觉得好用麻烦点个Star感谢!

Kafka 的消费offset原来是使用ZK管理,现在新版本是怎么管理的?

目录 基于 ZooKeeper 管理消费 offset 原理 缺点 新版本基于内部主题管理消费 offset 原理 优点 示例代码(Java) 在 Kafka 早期版本中,消费者的消费偏移量(offset)是存储在 ZooKeeper 中的,但由于 ZooKeeper 并不适合高频读写操作,从 Kafka 0.9 版本开始,消费偏…

使用 Nginx 搭建代理服务器(正向代理 HTTPS 网站)指南

在网络应用中,代理服务器是用于中转用户请求和服务端响应的工具。正向代理主要用于客户端与外部服务器之间的访问代理,帮助客户端隐藏其 IP 地址或访问受限资源。本文将详细介绍如何使用 Nginx 搭建正向代理服务器,特别是针对 HTTPS 网站的代…

arduino扩展:Arduino Mega 控制 32 个舵机(参考表情机器人)

参考:表情机器人中使用22个舵机的案例 引言 在电子制作与自动化控制领域,Arduino 凭借其易用性和强大的扩展性备受青睐。Arduino Mega 作为其中功能较为强大的一款开发板,具备丰富的引脚资源,能够实现复杂的控制任务。舵机作为常…

PyQt学习记录03——批量设置水印

0. 目录 PyQt学习记录01——加法计算器 PyQt学习记录02——串口助手 1. 前言 本次主要是为了学习Qt中的 QFileDialog 函数, QFileDialog.getExistingDirectory:用于选择文件夹,返回的是一个文件夹路径。 QFileDialog.getOpenFileName&…

Visual Studio 使用 “Ctrl + /”键设置注释和取消注释

问题:在默认的Visual Studio中,选择单行代码后,按下Ctrl /键会将代码注释掉,但再次按下Ctrl /键时,会进行双重注释,这不是我们想要的。 实现效果:当按下Ctrl /键会将代码注释掉,…

社区版IDEA中配置TomCat(详细版)

文章目录 1、下载Smart TomCat2、配置TomCat3、运行代码 1、下载Smart TomCat 由于小编的是社区版,没有自带的tomcat server,所以在设置的插件里面搜索,安装第一个(注意:安装时一定要关闭外网,小编因为这个…

利用kali linux 进行自动化渗透测试

本方案旨在自动化创建渗透测试全流程 一、架构 1.智能信息收集体系 class IntelligentOSINT:def __init__(self, target):self.target targetself.intelligence_sources [OSINT_Platforms,DeepWeb_Crawlers, SocialMedia_Trackers,ML_Correlation_Engine]def advanced_col…

Flink-DataStream API

一、什么样的数据可以用于流式传输 Flink的DataStream API 允许流式传输他们可以序列化的任何内容。Flink自己的序列化程序用于 基本类型:即字符串、长、整数、布尔值、数组复合类型:元组、POJO和Scala样例类 基本类型我们已经很熟悉了,下…

渗透利器:Burp Suite 联动 XRAY 图形化工具.(主动扫描+被动扫描)

Burp Suite 联动 XRAY 图形化工具.(主动扫描被动扫描) Burp Suite 和 Xray 联合使用,能够将 Burp 的强大流量拦截与修改功能,与 Xray 的高效漏洞检测能力相结合,实现更全面、高效的网络安全测试,同时提升漏…

AI时代,职场人如何开启学习之旅

为什么要学习 AI 在当今数字化时代,AI 正以前所未有的速度改变着我们的工作和生活方式。从智能客服到自动化生产,从数据分析到个性化推荐,AI 已经广泛渗透到各个行业和领域。学习 AI,对于工作人员来说,不仅是提升工作…

2.3 Transformer架构革命:从自注意力到万亿参数大模型的演进之路

Transformer架构革命:从自注意力到万亿参数大模型的演进之路 一、Transformer核心突破:彻底颠覆序列建模范式 1.1 传统序列模型的致命瓶颈 # RNN/LSTM的串行计算缺陷示例 hidden_state torch.zeros(seq_len, batch_size, hidden_dim) for t in ra…

Java 大视界 -- 深入剖析 Java 在大数据内存管理中的优化策略(49)

💖💖💖亲爱的朋友们,热烈欢迎你们来到 青云交的博客!能与你们在此邂逅,我满心欢喜,深感无比荣幸。在这个瞬息万变的时代,我们每个人都在苦苦追寻一处能让心灵安然栖息的港湾。而 我的…

JVM ②-双亲委派模型 || 垃圾回收GC

这里是Themberfue 在上节课对内存区域划分以及类加载的过程有了简单的了解后,我们再了解其他两个较为重要的机制,这些都是面试中常考的知识点,有必要的话建议背出来,当然不是死记硬背,而是要有理解的背~~~如果对 JVM …

html文件怎么转换成pdf文件,2025最新教程

将HTML文件转换成PDF文件,可以采取以下几种方法: 一、使用浏览器内置功能 打开HTML文件:在Chrome、Firefox、IE等浏览器中打开需要转换的HTML文件。打印对话框:按下CtrlP(Windows)或CommandP(M…

【Redis】 - Redis的Bitmap实现用户签到

Redis的Bitmap实现用户签到 使用Redis的Bitmap数据结构来记录用户的每日签到状态是一种高效且节省空间的方法。通过将用户ID和日期结合生成动态Key,可以轻松管理不同用户在不同日期的签到情况。下面详细介绍如何设计这一方案。 设计思路 动态Key生成:根…

系统开发:大文件下载报错问题

问题描述:在个人开发文件上传管理系统时,遇到小文件可以直接下载,遇到大文件只能在刚登陆成功时下载一次,再次下载别的大文件就会报错,具体错误信息是这样: AxiosError {message: Network Error, name: Ax…

蓝桥杯备赛笔记(二)

这里的笔记是关于蓝桥杯关键知识点的记录,有别于基础语法,很多内容只要求会用就行,无需深入掌握。 文章目录 前言一、时间复杂度1.1 时间复杂度⭐1.2 空间复杂度1.3 分析技巧 总结 前言 持续更新,千里之行始于足下 一、时间复杂度…

2025 西湖论剑wp

web Rank-l 打开题目环境: 发现一个输入框,看一下他是用上面语言写的 发现是python,很容易想到ssti 密码随便输,发现没有回显 但是输入其他字符会报错 确定为ssti注入 开始构造payload, {{(lipsum|attr(‘global…

Web前端开发--HTML

HTML快速入门 1.新建文本文件&#xff0c;后缀名改为.html 2.编写 HTML结构标签 3.在<body>中填写内容 HTML结构标签 特点 1.HTML标签中不区分大小写 2.HTML标签属性值中可以使用单引号也可使用双引号 3.HTML语法结构比较松散&#xff08;但在编写时要严格一点&…