Husky + Lint-staged + Commitlint + Commitizen来配置 Git 提交代码规范

本文主要是介绍Husky + Lint-staged + Commitlint + Commitizen来配置 Git 提交代码规范,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

本文介绍 如何通过 Husky + Lint-staged + Commitlint + Commitizen来配置 Git 提交代码规范。

核心内容是配置 Husky 的 pre-commitcommit-msg 两个钩子:

pre-commit:Husky + Lint-staged 整合实现 Git 提交前代码规范检测/格式化 (前提:ESlint + Prettier + Stylelint 代码统一规范);

commit-msg: Husky + Commitlint + Commitizen 整合实现生成规范化且高度自定义的 Git commit message。

官方推荐自动安装的方式,使用 husky-init 命令一次性完成依赖自动安装和配置

npx husky-init
npm install

自动生成的 .husky 目录和指令:

在这里插入图片描述

Lint-staged

lint-staged 是一个在 git add 到暂存区的文件运行 linters (ESLint/Prettier/StyleLint) 的工具,避免在 git commit 提交时在整个项目执行。

官方网站:https://github.com/okonet/lint-staged

Lint-staged 安装

npm install -D lint-staged

Lint-staged 配置

检测/格式化配置

注意如果是旧项目集成时,需要先进行npm run lint 进行格式化手动处理一些问题。

在这里插入图片描述

修改提交前钩子命令

根目录 .husky 目录下 pre-commit 文件中的 npm test 修改为 lint-staged --allow-empty

添加提交信息校验钩子

执行下面命令生成 commint-msg 钩子用于 git 提交信息校验,命令来自:官网

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

Commitlint

Commitlint 检查您的提交消息是否符合 Conventional commit format。– Commitlint 官网

Commitlint 安装

参考 官方安装文档

Commitlint 配置

根目录创建 commitlint.config.cjs 配置文件,示例配置: @commitlint/config-conventional

module.exports = {// 继承的规则extends: ["@commitlint/config-conventional"],// @see: https://commitlint.js.org/#/reference-rulesrules: {"subject-case": [0], // subject大小写不做校验// 类型枚举,git提交type必须是以下类型"type-enum": [2,"always",['build', // 构建流程、外部依赖变更(如升级 npm 包、修改 webpack 配置等)'chore', // 对构建过程或辅助工具和库的更改(不影响源文件、测试用例)'ci', // 修改 CI 配置、脚本'docs', // 文档变更'feat', // 新增功能'fix',  // 修复缺陷'perf', // 性能优化'refactor', // 代码重构(不包括 bug 修复、功能新增)'revert', // 回滚 commit'style', // 代码格式(不影响功能,例如空格、分号等格式修正)'test', // 添加疏漏测试或已有测试改动'text', // 修改文案'merge' // 处理合并分支],],},
};

Commitizen & cz-conventional-changelog-zh

commitizen: 基于Node.js的 git commit 命令行工具,辅助生成标准化规范化的 commit message。官方文档
cz-conventional-changelog-zh:基于cz-conventional-changelog的基础修改的中文版

Commitizen &cz-conventional-changelog-zh安装

修改 package.json 指定使用的适配器

  "config": {"commitizen": {"path": "node_modules/cz-conventional-changelog-zh","types": {"feat": {"description": "一个新功能","title": "Features"},"fix": {"description": "一个bug","title": "Bug Fixes"},"docs": {"description": "文档增删改","title": "Documentation"},"text": {"description": "修改文案","title": "Text"},"merge": {"description": "处理合并分支","title": "Merges"},"style": {"description": "样式修改(空白、格式、缺少分号等)","title": "Styles"},"refactor": {"description": "既不修复bug也不添加新功能的更改","title": "Code Refactoring"},"perf": {"description": "性能优化","title": "Performance Improvements"},"test": {"description": "增加测试","title": "Tests"},"build": {"description": "影响构建系统或外部依赖项的更改(示例范围:gulp、broccoli、npm)","title": "Builds"},"ci": {"description": "对CI配置文件和脚本的更改(示例范围:Travis, Circle, BrowserStack, SauceLabs)","title": "Continuous Integrations"},"chore": {"description": "除src目录或测试文件以外的修改","title": "Chores"},"revert": {"description": "回退历史版本","title": "Reverts"},"conflict": {"description": "修改冲突","title": "Conflict"},"font": {"description": "字体文件更新","title": "Fonts"},"delete": {"description": "删除文件","title": "Delete Files"},"stash": {"description": "暂存文件","title": "Stash Files"}}}}

添加提交指令

 "scripts": {"commit": "cz"}

执行 commit 指令进行代码提交流程,执行前需将改动的文件通过 git add 添加到暂存区

在这里插入图片描述

这篇关于Husky + Lint-staged + Commitlint + Commitizen来配置 Git 提交代码规范的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1094961

相关文章

IDEA中配置Tomcat全过程

《IDEA中配置Tomcat全过程》文章介绍了在IDEA中配置Tomcat的六步流程,包括添加服务器、配置部署选项、设置应用服务器及启动,并提及Maven依赖可能因约定大于配置导致问题,需检查依赖版本... 目录第一步第二步第三步第四步第五步第六步总结第一步选择这个方框第二步选择+号,找到Tomca

Django开发时如何避免频繁发送短信验证码(python图文代码)

《Django开发时如何避免频繁发送短信验证码(python图文代码)》Django开发时,为防止频繁发送验证码,后端需用Redis限制请求频率,结合管道技术提升效率,通过生产者消费者模式解耦业务逻辑... 目录避免频繁发送 验证码1. www.chinasem.cn避免频繁发送 验证码逻辑分析2. 避免频繁

Win10安装Maven与环境变量配置过程

《Win10安装Maven与环境变量配置过程》本文介绍Maven的安装与配置方法,涵盖下载、环境变量设置、本地仓库及镜像配置,指导如何在IDEA中正确配置Maven,适用于Java及其他语言项目的构建... 目录Maven 是什么?一、下载二、安装三、配置环境四、验证测试五、配置本地仓库六、配置国内镜像地址

精选20个好玩又实用的的Python实战项目(有图文代码)

《精选20个好玩又实用的的Python实战项目(有图文代码)》文章介绍了20个实用Python项目,涵盖游戏开发、工具应用、图像处理、机器学习等,使用Tkinter、PIL、OpenCV、Kivy等库... 目录① 猜字游戏② 闹钟③ 骰子模拟器④ 二维码⑤ 语言检测⑥ 加密和解密⑦ URL缩短⑧ 音乐播放

Python使用Tenacity一行代码实现自动重试详解

《Python使用Tenacity一行代码实现自动重试详解》tenacity是一个专为Python设计的通用重试库,它的核心理念就是用简单、清晰的方式,为任何可能失败的操作添加重试能力,下面我们就来看... 目录一切始于一个简单的 API 调用Tenacity 入门:一行代码实现优雅重试精细控制:让重试按我

SpringBoot多环境配置数据读取方式

《SpringBoot多环境配置数据读取方式》SpringBoot通过环境隔离机制,支持properties/yaml/yml多格式配置,结合@Value、Environment和@Configura... 目录一、多环境配置的核心思路二、3种配置文件格式详解2.1 properties格式(传统格式)1.

Debian系和Redhat系防火墙配置方式

《Debian系和Redhat系防火墙配置方式》文章对比了Debian系UFW和Redhat系Firewalld防火墙的安装、启用禁用、端口管理、规则查看及注意事项,强调SSH端口需开放、规则持久化,... 目录Debian系UFW防火墙1. 安装2. 启用与禁用3. 基本命令4. 注意事项5. 示例配置R

PyCharm中配置PyQt的实现步骤

《PyCharm中配置PyQt的实现步骤》PyCharm是JetBrains推出的一款强大的PythonIDE,结合PyQt可以进行pythion高效开发桌面GUI应用程序,本文就来介绍一下PyCha... 目录1. 安装China编程PyQt1.PyQt 核心组件2. 基础 PyQt 应用程序结构3. 使用 Q

Redis MCP 安装与配置指南

《RedisMCP安装与配置指南》本文将详细介绍如何安装和配置RedisMCP,包括快速启动、源码安装、Docker安装、以及相关的配置参数和环境变量设置,感兴趣的朋友一起看看吧... 目录一、Redis MCP 简介二、安www.chinasem.cn装 Redis MCP 服务2.1 快速启动(推荐)2.

Spring Boot配置和使用两个数据源的实现步骤

《SpringBoot配置和使用两个数据源的实现步骤》本文详解SpringBoot配置双数据源方法,包含配置文件设置、Bean创建、事务管理器配置及@Qualifier注解使用,强调主数据源标记、代... 目录Spring Boot配置和使用两个数据源技术背景实现步骤1. 配置数据源信息2. 创建数据源Be