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

相关文章

SQL Server配置管理器无法打开的四种解决方法

《SQLServer配置管理器无法打开的四种解决方法》本文总结了SQLServer配置管理器无法打开的四种解决方法,文中通过图文示例介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的... 目录方法一:桌面图标进入方法二:运行窗口进入检查版本号对照表php方法三:查找文件路径方法四:检查 S

IDEA中新建/切换Git分支的实现步骤

《IDEA中新建/切换Git分支的实现步骤》本文主要介绍了IDEA中新建/切换Git分支的实现步骤,通过菜单创建新分支并选择是否切换,创建后在Git详情或右键Checkout中切换分支,感兴趣的可以了... 前提:项目已被Git托管1、点击上方栏Git->NewBrancjsh...2、输入新的分支的

一文详解Git中分支本地和远程删除的方法

《一文详解Git中分支本地和远程删除的方法》在使用Git进行版本控制的过程中,我们会创建多个分支来进行不同功能的开发,这就容易涉及到如何正确地删除本地分支和远程分支,下面我们就来看看相关的实现方法吧... 目录技术背景实现步骤删除本地分支删除远程www.chinasem.cn分支同步删除信息到其他机器示例步骤

Java中调用数据库存储过程的示例代码

《Java中调用数据库存储过程的示例代码》本文介绍Java通过JDBC调用数据库存储过程的方法,涵盖参数类型、执行步骤及数据库差异,需注意异常处理与资源管理,以优化性能并实现复杂业务逻辑,感兴趣的朋友... 目录一、存储过程概述二、Java调用存储过程的基本javascript步骤三、Java调用存储过程示

Visual Studio 2022 编译C++20代码的图文步骤

《VisualStudio2022编译C++20代码的图文步骤》在VisualStudio中启用C++20import功能,需设置语言标准为ISOC++20,开启扫描源查找模块依赖及实验性标... 默认创建Visual Studio桌面控制台项目代码包含C++20的import方法。右键项目的属性:

Linux中SSH服务配置的全面指南

《Linux中SSH服务配置的全面指南》作为网络安全工程师,SSH(SecureShell)服务的安全配置是我们日常工作中不可忽视的重要环节,本文将从基础配置到高级安全加固,全面解析SSH服务的各项参... 目录概述基础配置详解端口与监听设置主机密钥配置认证机制强化禁用密码认证禁止root直接登录实现双因素

嵌入式数据库SQLite 3配置使用讲解

《嵌入式数据库SQLite3配置使用讲解》本文强调嵌入式项目中SQLite3数据库的重要性,因其零配置、轻量级、跨平台及事务处理特性,可保障数据溯源与责任明确,详细讲解安装配置、基础语法及SQLit... 目录0、惨痛教训1、SQLite3环境配置(1)、下载安装SQLite库(2)、解压下载的文件(3)、

MySQL数据库的内嵌函数和联合查询实例代码

《MySQL数据库的内嵌函数和联合查询实例代码》联合查询是一种将多个查询结果组合在一起的方法,通常使用UNION、UNIONALL、INTERSECT和EXCEPT关键字,下面:本文主要介绍MyS... 目录一.数据库的内嵌函数1.1聚合函数COUNT([DISTINCT] expr)SUM([DISTIN

Java实现自定义table宽高的示例代码

《Java实现自定义table宽高的示例代码》在桌面应用、管理系统乃至报表工具中,表格(JTable)作为最常用的数据展示组件,不仅承载对数据的增删改查,还需要配合布局与视觉需求,而JavaSwing... 目录一、项目背景详细介绍二、项目需求详细介绍三、相关技术详细介绍四、实现思路详细介绍五、完整实现代码

Linux如何快速检查服务器的硬件配置和性能指标

《Linux如何快速检查服务器的硬件配置和性能指标》在运维和开发工作中,我们经常需要快速检查Linux服务器的硬件配置和性能指标,本文将以CentOS为例,介绍如何通过命令行快速获取这些关键信息,... 目录引言一、查询CPU核心数编程(几C?)1. 使用 nproc(最简单)2. 使用 lscpu(详细信