当前位置: 首页 > news >正文

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按照不规范的格式提交就不会生效。
不按规范提交代码:
在这里插入图片描述
按规范提交代码:
在这里插入图片描述

相关文章:

  • 大语言模型多代理协作(MACNET)
  • 计算机视觉中图像的基础认知
  • 二级等保对机房的要求
  • 集成学习(二):从理论到实战(附代码)
  • DeepSeek-R1 蒸馏 Qwen 和 Llama 架构 企业级RAG知识库
  • 侯捷 C++ 课程学习笔记:C++ 内存管理机制的深度剖析与实践
  • 石英表与机械表的世纪之争(Quartz vs. Mechanical Watches):瑞士钟表业的危机与重生(中英双语)
  • Ubuntu+Laravel+MQ+Supervisor队列系统搭建流程
  • 从VGG到Transformer:深度神经网络层级演进对模型性能的深度解析与技术实践指南
  • DeepSeek 助力 Vue 开发:打造丝滑的进度条
  • 微信服务号推送消息
  • .NET Web-静态文件访问目录浏览
  • 读 DeepSeek-R1 论文笔记
  • Jenkins 配置 Git Repository 五
  • 【MySQL】通过shell脚本一键同步MySQL数据库结构和数据到指定库中
  • Mysql进阶篇(mysqlcheck - 表维护程序)
  • C# 两种方案实现调用 DeepSeek API
  • C/C++程序的内存是如何开辟的?
  • 如何在 Java 应用中实现数据库的主从复制(读写分离)?请简要描述架构和关键代码实现?
  • hbase合并队列超长问题分析
  • 新任美国驻华大使庞德伟抵京履职,外交部回应
  • 巴菲特谈卸任CEO:开始偶尔失去平衡,但仍然保持敏锐的头脑,仍打算继续工作
  • 牛市早报|4月新增社融1.16万亿,降准今日正式落地
  • 泽连斯基:正在等待俄方确认参加会谈的代表团组成
  • 我的科学观|梅彦昌:科技创新关键在于能否跑得快,而不是有没有钱
  • 马上评丨岂能为流量拿自己的生命开玩笑