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

vue3+ts:约定式提交(git husky + gitHooks)

一、背景

Git - githooks Documentation

https://github.com/typicode/husky#readme

gitHooks: commit-msg_snow@li的博客-CSDN博客

之前实践过这个配置,本文在vue3 + ts 的项目中,再记录一次。

二、使用

2.1、安装

2.1.1、安装husky

pnpm add husky

2.1.2、package.json

"scripts": {"prepare": "husky install",
}

 2.1.3、pnpm run prepare

pnpm run prepare

执行后:

2.2、初始化husky 

npx husky install .husky

执行后: 

2.3、package.json

"gitHooks": {"pre-commit": "lint-staged","commit-msg": "node scripts/verify-commit-msg.js"}

2.4、安装chalk,vue3+ts使用4.X版本 

pnpm add chalk@4.1.2

2.5、/scripts/verify-commit-msg.js

import chalk from 'chalk'; // 控制台日志标注样式
import fs from 'fs';
const msgPath = process.env.GIT_PARAMS || '.git/COMMIT_EDITMSG' // 读取到保存 git commit 时输入的描述信息的文件目录,一般路径如下:.git/COMMIT_EDITMSG
const msg = fs.readFileSync(msgPath, 'utf-8').trim()const commitRE =/^(revert: )?(wip|release|feat|fix|polish|docs|style|refactor|perf|test|workflow|ci|chore|types|build)(\(.+\))?: .{1,50}/if (!commitRE.test(msg)) {console.log()console.error(`  ${chalk.bgRed.white(' ERROR ')} ${chalk.red(`invalid commit message format.`)}\n\n` +chalk.red(`  Proper commit message format is required for automated changelog generation. Examples:\n\n`) +`    ${chalk.green(`feat(compiler): add 'comments' option`)}\n` +`    ${chalk.green(`fix(v-model): handle events on blur (close #28)`)}\n\n` +chalk.red(`  See .github/COMMIT_CONVENTION.md for more details.\n`))process.exit(1)
}

2.6、添加一个commit msg钩子

npx husky add .husky/commit-msg "node scripts/verify-commit-msg.js"

2.7、测试提交

不规范示例:

规范示例:

经测试提交成功。

过程记录:

记录一、

 ReferenceError require is not defined in ES module scope, you can use import instead_绘绘~的博客-CSDN博客

记录二、

const msgPath = process.env.GIT_PARAMS

const msgPath = process.env.GIT_PARAMS || '.git/COMMIT_EDITMSG'

GIT_PARAMS没有读到目录,本文使用静态目录,待后续研究。

记录三、

引入chalk、fs需要使用import,使用require报错

记录四、 git 钩子

Git - githooks Documentation

参考链接:

Git钩子 GitHook - 简书

husky的使用 - 简书

VUE 3.0 源码 scripts/verifyCommit.js 文件 对git提交时输入的描述信息进行规范_git_params_老罗-laoluo的博客-CSDN博客

ReferenceError require is not defined in ES module scope, you can use import instead_绘绘~的博客-CSDN博客

Vue3项目工程化配置:Prettier + Eslint + husky + commitlint - 点击领取

vite vue3 规范化与Git Hooks详解_vue.js_脚本之家

https://www.cnblogs.com/heyhaiyang/p/15256588.html

前端工程规范化-eslint、stylelint、prettier、git hooks_51CTO博客_前端模块化规范

【Vue3】标准化大厂编程规范解决方案之ESLint + Git Hooks_51CTO博客_vue3 生产

Git commit 消息的格式与约定式提交_哔哩哔哩_bilibili

vite vue3 规范化与Git Hooks

Vue3 + Vite 前端工程化-基础篇 - 知乎

相关文章:

vue3+ts:约定式提交(git husky + gitHooks)

一、背景 Git - githooks Documentation https://github.com/typicode/husky#readme gitHooks: commit-msg_snowli的博客-CSDN博客 之前实践过这个配置,本文在vue3 ts 的项目中,再记录一次。 二、使用 2.1、安装 2.1.1、安装husky pnpm add hus…...

TSP 问题求解的最好方法 LKH

目前可以查到的最好的方法求解TSP问题是 LKH,所以本篇文章介绍如何使用Matlab 调用LKH 参考文档:用matlab调用迄今为止最强悍的求解旅行商(TSP)的算法-LKH算法_wx6333e948c3602的技术博客_51CTO博客 【LKH算法体验】用matlab调用…...

RocketMQ5.1控制台的安装与启动

RocketMQ控制台的安装与启动下载修改配置开放端口号重启防火墙添加依赖编译 rocketmq-dashboard运行 rocketmq-dashboard本地访问rocketmq无法发送消息失败问题。connect to <公网ip:10911> failed下载 下载地址 修改配置 修改其src/main/resources中…...

【java基础】类型擦除、桥方法、泛型代码和虚拟机

文章目录基础说明类型擦除无限定有限定转换泛型表达式方法类型擦除(桥方法)关于重载的一些说明总结基础说明 虚拟机没有泛型类型对象一所有对象都属于普通类。在泛型实现的早期版本中,甚至能够将使用泛型的程序编译为在1.0虚拟机上运行的类文…...

十家公司有九家问过的软件测试面试题,最后一题我猜你肯定不会

最近面试了一些测试方面相关的岗位,通过牛客等途径也看了不少的面经,发现大部分人面试题目都有很多相似点,结合自己的一些面试经历,现在分享一些我面试中碰到过的问题 常见的面试题 1、jmeter的加密参数如何入参? 2…...

C++核心知识(三)—— 静态成员(变量、函数、const成员)、面向对象模型(this指针、常函数、常对象)、友元、数组类、单例模式

【上一篇】C核心知识(二)—— 类和对象(类的封装)、对象的构造和析构(浅拷贝、深拷贝、explicit、动态分配内存)1. 静态成员在类定义中,它的成员(包括成员变量和成员函数),这些成员可以用关键字static声明为…...

RocketMQ【3】Rocketmq集群部署(多master多slave)异步复制

系列文章目录 RocketMQ【1】linux安装配置Rocketmq(单机版) RocketMQ【2】Rocketmq控制台安装启动(单机版) 文章目录系列文章目录一、异步复制的优缺点1、优点2、缺点二、架构1、架构图2、介绍3、机器配置三、配置1、master节点配…...

魏玛早春 木心

<font face“黑体” color#CD5C5C size6 魏玛早春 木心 温带每个季节之初 总有神圣气象恬漠地 剀切地透露在风中 冬天行将退尽 春寒嫩生生 料峭而滋润 漾起离合纷纷的私淑记忆 日复一日 默认季节的更替 以春的正式最为谨慎隆重 如果骤尔明暖 鸟雀疏狂飞鸣 必定会吝悔似的剧…...

关于Scipy的概念和使用方法及实战

关于scipy的概念和使用方法 什么是Scipy Scipy是一个基于Python的科学计算库&#xff0c;它提供了许多用于数学、科学、工程和技术计算的工具和函数。Scipy的名称是“Scientific Python”的缩写。 Scipy包含了许多子模块&#xff0c;其中一些主要的子模块包括&#xff1a; …...

第二章Linux操作语法1

文章目录vi和vim常用的三种模式vi和vim快捷键Linux开机&#xff0c;重启用户管理用户信息查询管理who和whoami用户组信息查询管理用户和组的相关文件实用指令集合运行级别帮助指令manhelp文件管理类pwd命令ls命令cd命令mkdir命令rmdir命令rm命令touch命令cp指令mv指令文件查看类…...

linux内核调度问题分析

目录 一、调度场景分析 不支持内核抢占的内核 支持内核抢占 二、如何让新进程执行 三、调度的本质 一、调度场景分析 假如内核只有3个线程&#xff0c;线程0创建线程1和线程2.当系统时钟到来时&#xff0c;时钟中断处理函数会检查是否有进程需要调度。当有进程需要调度时…...

C语言-基础了解-25-C强制类型转换

C强制类型转换 一、强制类型转换 强制类型转换是把变量从一种类型转换为另一种数据类型。例如&#xff0c;如果您想存储一个 long 类型的值到一个简单的整型中&#xff0c;您需要把 long 类型强制转换为 int 类型。您可以使用强制类型转换运算符来把值显式地从一种类型转换为…...

【Python】如何安装 Allure 工具进行自动化测试

Allure 是一种流行的工具&#xff0c;用于以人类可读的格式生成测试报告&#xff0c;从而更容易理解和分析测试结果。在这篇博客中&#xff0c;我们将探索如何在 Windows 机器上安装 Allure 及其依赖项。 1 Prerequisites 先决条件 在田辛老师开始之前&#xff0c;请确保您的…...

nginx七大核心应用场景详解 解决生产中的实际问题 二次开发扩展

nginx七大核心应用场景详解 & 解决生产中的实际问题1、nginx的安装与简单配置1.1、环境准备1.2、nginx基本操作指令&#xff1a;1.3、安装成系统服务1.4、conf 配置文件说明2、虚拟主机2.1、nginx多主机配置2.2、二级域名与短网址解析3、基于反向代理的负载均衡3.1、跳转到…...

Java 整合 Redis

文章目录Java 整合 Redis一、Jedis二、Spring-Data-RedisJava 整合 Redis Redis 在项目中我们主要用来做缓存&#xff0c;就像我们用 MySQL 做持久层数据一样。Redis 的客户端有两种实现方式&#xff1a; 一是直接调用 Jedis 来实现&#xff0c;类似于 Java 使用 JDBC 操作数…...

Django实践-03模型-02基于admin管理表

文章目录Django实践-03模型利用Django后台管理模型1. 将admin应用所需的表迁移到数据库中。2. 创建访问admin应用的超级用户账号&#xff0c;3. 运行项目4.注册模型类5.对模型进行CRUD操作。6.实现学科页和老师页效果1. 修改polls/views.py文件。2.修改templates/polls/subject…...

如何安装python

windows安装 下载安装包 登录python官网 https://www.python.org/ 点击downloads 置顶下载的是最新的python版本 如果想下载指定版本往下翻找 安装程序 点击即可下载&#xff0c;然后打开下载的exe程序 勾选添加pythonexec到path&#xff0c;也就是添加到环境变量 使用a…...

java String类 万字详解(通俗易懂)

目录 一、前言 二、介绍和溯源 三、String类常用构造器 1.String() 2.String(byte[] bytes) 3.String(char[] value) 4.String(char[] value, int offset, int count) 5.String(String original) Δ演示 : 四、不同方式创建String类对象的区别 1.直接赋值的方式 2.常规new…...

Hive拉链表

概述 拉链表&#xff1a;维护历史状态以及最新状态数据的表 作用场景 1. 数据量比较大。 2. 表中的部分字段会被更新&#xff0c;比如用户的地址&#xff0c;银行利率&#xff0c;订单的状态等。 3. 需要查看某一个时间点或者时间段的历史快照信息&#xff0c;比如&#xff0c;…...

day1 开发我的第一个MyBatis程序

文章目录开发我的第一个MyBatis程序1. resources目录&#xff1a;2. 开发步骤3. 从 XML 中构建 SqlSessionFactoryMyBatisIntroductionTest4. mybatis中有两个主要的配置文件&#xff1a;5. 关于第一个程序的小细节mybatis-config.xml6. 关于mybatis的事务管理机制。&#xff0…...

2026年AI前20岗位薪酬出炉!搞AI大模型的远超同行?

AI相关&#xff0c;细分技术领域&#xff0c;薪资前20岗位&#xff0c;都有哪些。 今天这篇文章与铁铁们分享一下。 1 薪资榜单 如下图所示&#xff0c;排名第一&#xff1a;深度学习算法工程师&#xff0c;平均月薪达到3万1千&#xff1b; 排名第二的架构师&#xff0c;薪资与…...

CANOE Demo版快速下载与激活指南

1. CANOE Demo版是什么&#xff1f;为什么你需要它&#xff1f; 如果你正在学习汽车电子开发或者从事相关领域的工作&#xff0c;CANOE这个名字一定不会陌生。作为Vector公司推出的主流汽车总线开发工具&#xff0c;它几乎成了行业标准。但对于刚入门的新手来说&#xff0c;动辄…...

麦橘超然Flux效果展示:多风格AI绘画作品集锦

麦橘超然Flux效果展示&#xff1a;多风格AI绘画作品集锦 1. 惊艳开篇&#xff1a;当AI画笔遇见专业级表现 在数字艺术创作领域&#xff0c;我们常常面临一个两难选择&#xff1a;要么使用云端AI服务但受限于网络和隐私&#xff0c;要么部署本地工具却要忍受复杂的配置和显存焦…...

Excel双坐标折线图保姆级教程:用散点图搞定多组数据对比(附详细步骤图)

Excel双坐标折线图进阶指南&#xff1a;用散点图实现精准数据可视化 在数据分析的日常工作中&#xff0c;我们经常遇到需要同时展示两组量纲差异巨大的数据——比如销售额&#xff08;百万级&#xff09;和增长率&#xff08;百分比&#xff09;。传统的双坐标折线图虽然能解决…...

分子构象采样新范式:CREST工具解决药物研发核心挑战

分子构象采样新范式&#xff1a;CREST工具解决药物研发核心挑战 【免费下载链接】crest Conformer-Rotamer Ensemble Sampling Tool based on the xtb Semiempirical Extended Tight-Binding Program Package 项目地址: https://gitcode.com/gh_mirrors/crest/crest 在药…...

OCLP-Mod:终极指南 - 让老旧Mac免费升级到最新macOS

OCLP-Mod&#xff1a;终极指南 - 让老旧Mac免费升级到最新macOS 【免费下载链接】OCLP-Mod A mod version for OCLP,with more interesting features. 项目地址: https://gitcode.com/gh_mirrors/oc/OCLP-Mod 你是否拥有一台被苹果官方"抛弃"的老旧Mac&#x…...

告别手推雅可比!用Ceres自动求导搞定SLAM中的BA优化(附完整代码)

告别手推雅可比&#xff01;用Ceres自动求导搞定SLAM中的BA优化&#xff08;附完整代码&#xff09; 在视觉SLAM系统的开发中&#xff0c;Bundle Adjustment&#xff08;BA&#xff09;优化是提升定位与建图精度的关键环节。传统实现需要手动推导复杂的雅可比矩阵&#xff0c;不…...

PostgreSQL 模式级权限迁移:一键批量修改所有表与对象的所有者

1. 为什么需要批量修改PostgreSQL对象所有者&#xff1f; 在实际的数据库运维工作中&#xff0c;经常会遇到需要批量修改数据库对象所有者的情况。我遇到过不少这样的场景&#xff1a;公司部门重组后&#xff0c;原先由开发团队A负责的项目转交给团队B维护&#xff1b;或者某个…...

Cadence原理图网表导入Allegro PCB的5个关键步骤与避坑指南(2024最新版)

Cadence原理图网表导入Allegro PCB的5个关键步骤与避坑指南&#xff08;2024最新版&#xff09; 在电子设计自动化&#xff08;EDA&#xff09;领域&#xff0c;Cadence和Allegro的协同工作流程是硬件工程师日常开发的核心环节。网表作为连接原理图设计与PCB布局的桥梁&#xf…...

Python开源代码管理避坑实战:从Git高级操作到Docker环境配置

前言&#xff1a;为什么你总在开源门前徘徊&#xff1f; “这个项目看起来好复杂&#xff0c;我连代码都看不懂...” “提交PR会不会被大佬嘲笑&#xff1f;” “环境配置又报错了&#xff0c;算了&#xff0c;下次再说吧” 如果你有过这些想法&#xff0c;别担心&#xff…...