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

相关文章

Zookeeper安装和配置说明

一、Zookeeper的搭建方式 Zookeeper安装方式有三种,单机模式和集群模式以及伪集群模式。 ■ 单机模式:Zookeeper只运行在一台服务器上,适合测试环境; ■ 伪集群模式:就是在一台物理机上运行多个Zookeeper 实例; ■ 集群模式:Zookeeper运行于一个集群上,适合生产环境,这个计算机集群被称为一个“集合体”(ensemble) Zookeeper通过复制来实现

CentOS7安装配置mysql5.7 tar免安装版

一、CentOS7.4系统自带mariadb # 查看系统自带的Mariadb[root@localhost~]# rpm -qa|grep mariadbmariadb-libs-5.5.44-2.el7.centos.x86_64# 卸载系统自带的Mariadb[root@localhost ~]# rpm -e --nodeps mariadb-libs-5.5.44-2.el7

hadoop开启回收站配置

开启回收站功能,可以将删除的文件在不超时的情况下,恢复原数据,起到防止误删除、备份等作用。 开启回收站功能参数说明 (1)默认值fs.trash.interval = 0,0表示禁用回收站;其他值表示设置文件的存活时间。 (2)默认值fs.trash.checkpoint.interval = 0,检查回收站的间隔时间。如果该值为0,则该值设置和fs.trash.interval的参数值相等。

NameNode内存生产配置

Hadoop2.x 系列,配置 NameNode 内存 NameNode 内存默认 2000m ,如果服务器内存 4G , NameNode 内存可以配置 3g 。在 hadoop-env.sh 文件中配置如下。 HADOOP_NAMENODE_OPTS=-Xmx3072m Hadoop3.x 系列,配置 Nam

作业提交过程之HDFSMapReduce

作业提交全过程详解 (1)作业提交 第1步:Client调用job.waitForCompletion方法,向整个集群提交MapReduce作业。 第2步:Client向RM申请一个作业id。 第3步:RM给Client返回该job资源的提交路径和作业id。 第4步:Client提交jar包、切片信息和配置文件到指定的资源提交路径。 第5步:Client提交完资源后,向RM申请运行MrAp

wolfSSL参数设置或配置项解释

1. wolfCrypt Only 解释:wolfCrypt是一个开源的、轻量级的、可移植的加密库,支持多种加密算法和协议。选择“wolfCrypt Only”意味着系统或应用将仅使用wolfCrypt库进行加密操作,而不依赖其他加密库。 2. DTLS Support 解释:DTLS(Datagram Transport Layer Security)是一种基于UDP的安全协议,提供类似于

活用c4d官方开发文档查询代码

当你问AI助手比如豆包,如何用python禁止掉xpresso标签时候,它会提示到 这时候要用到两个东西。https://developers.maxon.net/论坛搜索和开发文档 比如这里我就在官方找到正确的id描述 然后我就把参数标签换过来

【Python编程】Linux创建虚拟环境并配置与notebook相连接

1.创建 使用 venv 创建虚拟环境。例如,在当前目录下创建一个名为 myenv 的虚拟环境: python3 -m venv myenv 2.激活 激活虚拟环境使其成为当前终端会话的活动环境。运行: source myenv/bin/activate 3.与notebook连接 在虚拟环境中,使用 pip 安装 Jupyter 和 ipykernel: pip instal

poj 1258 Agri-Net(最小生成树模板代码)

感觉用这题来当模板更适合。 题意就是给你邻接矩阵求最小生成树啦。~ prim代码:效率很高。172k...0ms。 #include<stdio.h>#include<algorithm>using namespace std;const int MaxN = 101;const int INF = 0x3f3f3f3f;int g[MaxN][MaxN];int n

MySQL高性能优化规范

前言:      笔者最近上班途中突然想丰富下自己的数据库优化技能。于是在查阅了多篇文章后,总结出了这篇! 数据库命令规范 所有数据库对象名称必须使用小写字母并用下划线分割 所有数据库对象名称禁止使用mysql保留关键字(如果表名中包含关键字查询时,需要将其用单引号括起来) 数据库对象的命名要能做到见名识意,并且最后不要超过32个字符 临时库表必须以tmp_为前缀并以日期为后缀,备份