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

相关文章

win10安装及配置Gradle全过程

《win10安装及配置Gradle全过程》本文详细介绍了Gradle的下载、安装、环境变量配置以及如何修改本地仓库位置,通过这些步骤,用户可以成功安装并配置Gradle,以便进行项目构建... 目录一、Gradle下载1.1、Gradle下载地址1.2、Gradle下载步骤二、Gradle安装步骤2.1、安

MySQL数据库双机热备的配置方法详解

《MySQL数据库双机热备的配置方法详解》在企业级应用中,数据库的高可用性和数据的安全性是至关重要的,MySQL作为最流行的开源关系型数据库管理系统之一,提供了多种方式来实现高可用性,其中双机热备(M... 目录1. 环境准备1.1 安装mysql1.2 配置MySQL1.2.1 主服务器配置1.2.2 从

IDEA和GIT关于文件中LF和CRLF问题及解决

《IDEA和GIT关于文件中LF和CRLF问题及解决》文章总结:因IDEA默认使用CRLF换行符导致Shell脚本在Linux运行报错,需在编辑器和Git中统一为LF,通过调整Git的core.aut... 目录问题描述问题思考解决过程总结问题描述项目软件安装shell脚本上git仓库管理,但拉取后,上l

Linux云服务器手动配置DNS的方法步骤

《Linux云服务器手动配置DNS的方法步骤》在Linux云服务器上手动配置DNS(域名系统)是确保服务器能够正常解析域名的重要步骤,以下是详细的配置方法,包括系统文件的修改和常见问题的解决方案,需要... 目录1. 为什么需要手动配置 DNS?2. 手动配置 DNS 的方法方法 1:修改 /etc/res

mysql8.0.43使用InnoDB Cluster配置主从复制

《mysql8.0.43使用InnoDBCluster配置主从复制》本文主要介绍了mysql8.0.43使用InnoDBCluster配置主从复制,文中通过示例代码介绍的非常详细,对大家的学习或者... 目录1、配置Hosts解析(所有服务器都要执行)2、安装mysql shell(所有服务器都要执行)3、

Java集合之Iterator迭代器实现代码解析

《Java集合之Iterator迭代器实现代码解析》迭代器Iterator是Java集合框架中的一个核心接口,位于java.util包下,它定义了一种标准的元素访问机制,为各种集合类型提供了一种统一的... 目录一、什么是Iterator二、Iterator的核心方法三、基本使用示例四、Iterator的工

Java 线程池+分布式实现代码

《Java线程池+分布式实现代码》在Java开发中,池通过预先创建并管理一定数量的资源,避免频繁创建和销毁资源带来的性能开销,从而提高系统效率,:本文主要介绍Java线程池+分布式实现代码,需要... 目录1. 线程池1.1 自定义线程池实现1.1.1 线程池核心1.1.2 代码示例1.2 总结流程2. J

java程序远程debug原理与配置全过程

《java程序远程debug原理与配置全过程》文章介绍了Java远程调试的JPDA体系,包含JVMTI监控JVM、JDWP传输调试命令、JDI提供调试接口,通过-Xdebug、-Xrunjdwp参数配... 目录背景组成模块间联系IBM对三个模块的详细介绍编程使用总结背景日常工作中,每个程序员都会遇到bu

JS纯前端实现浏览器语音播报、朗读功能的完整代码

《JS纯前端实现浏览器语音播报、朗读功能的完整代码》在现代互联网的发展中,语音技术正逐渐成为改变用户体验的重要一环,下面:本文主要介绍JS纯前端实现浏览器语音播报、朗读功能的相关资料,文中通过代码... 目录一、朗读单条文本:① 语音自选参数,按钮控制语音:② 效果图:二、朗读多条文本:① 语音有默认值:②

Vue实现路由守卫的示例代码

《Vue实现路由守卫的示例代码》Vue路由守卫是控制页面导航的钩子函数,主要用于鉴权、数据预加载等场景,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着... 目录一、概念二、类型三、实战一、概念路由守卫(Navigation Guards)本质上就是 在路