husky的简介以及如果想要放飞自我的解决方案

husky 是一个 Git Hooks 管理工具,它的主要作用是 在 Git 提交(commit)、推送(push)等操作时执行自定义脚本,比如代码检查(Lint)、单元测试(Test)、格式化代码(Prettier)等。

📌 husky 的作用

  1. 强制代码规范:在 pre-commit 钩子执行 eslint,确保提交的代码符合规范。
  2. 自动格式化代码:结合 prettierpre-commit 里自动格式化代码,避免手动修改格式。
  3. 防止提交 Bug:在 pre-push 执行单元测试 (npm test),如果测试未通过,禁止推送。
  4. 自动执行脚本:可以用 Git 钩子自动运行 builddeployupdate 等脚本。

🎯 husky 的常见 Git Hooks

Git Hook触发时机作用
pre-commitgit commit 之前运行 eslintprettier、检查代码
commit-msggit commit 之后规范化提交信息(如 feat: xxx
pre-pushgit push 之前运行 npm test,防止推送有 Bug 的代码
pre-rebasegit rebase 之前确保变基不会出错
post-mergegit pull 之后自动安装依赖 npm install

husky 的使用

1️⃣ 安装 husky
npx husky-init && npm install

或者手动安装:

npm install husky --save-dev

然后启用 Git Hooks:

npx husky install
2️⃣ 添加 pre-commit 钩子
npx husky add .husky/pre-commit "npm run lint"

这样,每次 git commit 时,都会执行 npm run lint 进行代码检查。

3️⃣ 添加 pre-push 钩子
npx husky add .husky/pre-push "npm test"

这样,每次 git push 时,都会执行 npm test 运行单元测试,如果测试失败,推送会被阻止。


📢 什么时候应该用 husky

适合团队合作、多人开发,强制代码规范。
适合大型项目,避免提交低质量代码。
如果是个人项目,且没有严格代码规范,可以不装 husky

在这里插入图片描述

🚀 如果想要移除husky

有些个人开发者不需要很强的代码规范,新接手一些轮子的时候可能会遇到 git commit 报错,是因为 huskypre-commit 阶段执行 npm test,但你的 package.json没有 test 脚本,导致错误。

解决方案

假设 husky 是你项目中的一个依赖包,你可以通过以下步骤使用 Yarn 将其移除:

  1. 在项目根目录下运行以下命令:
yarn remove husky
  1. 这会同时:
  • 从 package.json 中删除 husky 的依赖记录
  • 删除 node_modules 中相关的 husky 文件
  1. 如果你之前配置了 husky 的钩子(hooks),你可能还需要:
  • 检查 .git/hooks 目录,删除相关的钩子文件
  • 或者直接删除 .husky 目录(如果存在)

示例完整操作:

# 移除 husky 包
yarn remove husky# 如果需要,删除 husky 配置目录
rm -r -fo .husky

完成后,你可以用以下命令验证 husky 是否已移除:

yarn list --pattern husky

如果返回空结果,说明 husky 已成功移除。

在这里插入图片描述


或者

npm uninstall husky
rm -rf .husky

然后重新提交代码。

在这里插入图片描述


你可以看看 huskypre-commit 里到底执行了什么:

cat .husky/pre-commit

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/899078.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

JVM之类的加载过程

加载 这一阶段是将类的字节码从外部存储(如磁盘)加载到JVM的内存中。加载时,JVM会根据类的全限定名(包括包名和类名)查找相应的字节码文件(.class文件),并将其读入内存。 链接 链接…

Java Collection API增强功能系列之六 改进的 ConcurrentHashMap:归约、搜索、计数与 Set 视图详解

Java 8 改进的 ConcurrentHashMap:归约、搜索、计数与 Set 视图详解 Java 8 对 ConcurrentHashMap 进行了重大优化,不仅提升了并发性能,还引入了许多函数式编程方法,使其在处理高并发场景时更加高效和灵活。本文将深入解析 Concu…

AI生成移动端贪吃蛇游戏页面,手机浏览器打开即可玩

贪吃蛇游戏可计分&#xff0c;可穿墙&#xff0c;AI生成适配手机浏览器的游戏&#xff0c;代码如下&#xff1a; <!DOCTYPE html> <html lang"zh-CN"> <head> <meta charset"UTF-8"> <meta name"viewport" …

【动手学深度学习】#4 深度学习计算

主要参考学习资料&#xff1a; 《动手学深度学习》阿斯顿张 等 著 【动手学深度学习 PyTorch版】哔哩哔哩跟李牧学AI 概述 为了实现更复杂的网络&#xff0c;我们需要研究比层更高一级的单元块&#xff0c;在编程中由类表示。通过自定义层和块&#xff0c;我们能更灵活地搭建网…

如何在 Windows 上安装并使用 Postman?

Postman 是一个功能强大的API测试工具&#xff0c;它可以帮助程序员更轻松地测试和调试 API。在本文中&#xff0c;我们将讨论如何在 Windows 上安装和使用 Postman。 Windows 如何安装和使用 Postman 教程&#xff1f;

php写入\查询influxdb数据

namespace app\index\controller;use InfluxDB2\Client; use InfluxDB2\Model\WritePrecision; use InfluxDB2\Point;class Demo {/*** 显示资源列表** return \think\Response*/public function index(){$token 你的TOKEN;$org zzlichi;$bucket initdb;$client new Client…

26考研——图_图的基本概念(6)

408答疑 文章目录 一、图的基本概念图的定义非空性非线性结构 顶点和边的表示顶点边 有向图 & 无向图有向图有向图 G 1 G_1 G1​ 的表示 无向图无向图 G 2 G_2 G2​ 的表示 简单图 & 多重图简单图多重图 顶点的度、入度和出度顶点的度有向图的度 路径、路径长度和回路…

面向对象软件工程实践软件案例

智力运动-数字化思维训练课程介绍 数字化思维训练是科技赋能素质教育创新实践项目&#xff0c;通过数字化信息化手段&#xff0c;深度融合优质原创智力运动教育课程资源&#xff0c;服务幼儿园与小学&#xff0c;提供信息时代校园素质教育教学解决方案。在《面向对象软件工程》…

Linux学习笔记(应用篇一)

基于I.MX6ULL.MINI开发板 标准I/O库链接目录删除文件正则表达式系统标识时间堆内存信号标准信号 进程进程组进程间通信线程互斥锁线程安全 本文章是入门篇的概念&#xff0c;有点零散&#xff0c;后续需要补充复习 **inode&#xff08;索引节点&#xff09;**是 Linux 和 Unix …

Modbus RTU ---> Modbus TCP透传技术实现(Modbus透传、RS485透传、RTU透传)分站代码实现、协议转换器

文章目录 Modbus RTU到Modbus TCP透传技术实现1. 透传技术概述1.1 透传基本原理- 协议帧格式转换- 地址映射与管理- 通信时序适配- 错误检测与处理 2. 透传网关硬件架构2.1 典型硬件结构- 微控制器/处理器(ARM、STM32等)- RS-485/RS-232收发器- 以太网控制器(如W5500)- 电源管理…

MySQL数据库中常用的命令

登录&#xff1a; mysql -u username -h ip地址 -P 端口 -p 密码 mysql -u username -S /path/mysql.sock -P -p 用户管理&#xff1a; select user,host from mysql.user;//查看数据库中所用用户信息 create user username%;//创建用户 create user username% identifie…

医学交互作用分析步骤和目的(R语言)

医学交互作用分析的目的和用途&#xff08;R语言&#xff09; 医学交互作用分析一直是医学数据分析的组成部分&#xff0c;总结最近的一些认识。 目的&#xff1a; 在独立危险因素鉴定的研究中&#xff0c;&#xff08;独立危险因素的&#xff09;交互作用可以作为独立危险因…

Javaweb后端登录会话技术jwt令牌

jwt生成与校验 是base4补位的 最后面是签名&#xff0c;签名不是base64&#xff0c;是通过签名算法加密后来的 令牌长度不是固定的&#xff0c;长度取决于原始内容&#xff0c;载荷&#xff0c;大小 头有&#xff0c;类型&#xff0c;签名算法 base64可以对任意的二进制数据进…

Mybatis操作数据库(注解+xml两个方式)

文章目录 1.个人回顾2.关于mybatis注解的说明3.字段和属性不匹配的解决方案3.1第一个方案3.2第二个方案3.3第三个方案 4.xml路径配置5.xml里面的字段映射 1.个人回顾 刚刚翻看了一下自己的这个之前写的博客&#xff0c;上一次和这个javaee相关的博客还是去年写的&#xff0c;也…

SysVinit和Systemd的系统运行级别

Linux运行级别 SysVinit系统(init守护进程)Linux系统运行级别SysVinit系统(init守护进程)查看Linux运行级别SysVinit系统(init守护进程)修改运行级别&#xff1a; Systemd守护进程Linux系统运行级别systemd查看运行级别Systemd查看系统当前运行级别 systemd修改运行级别multi-u…

Mysql-经典实战案例(11):深度解析Sysbench压测(从入门到MySQL服务器性能验证)

引言 如何用Sysbench压测满足mysql生产运行的服务器&#xff1f; Sysbench返回的压测结果如何解读&#xff1f; 别急&#xff0c;本文会教大家如何使用并且如何解读压测的结果信息&#xff0c;如何对mysql服务器进行压测&#xff01; 一、Sysbench核心功能全景解析 1.1 工…

vscode终端不识别npm 无法解析npm

vscode 用以管理员打开识别npm vscode 用普通用户打开不识别npm 刚换了一台新电脑&#xff0c;寻思安装各种环境&#xff0c;一顿操作猛如虎&#xff0c;当最后一个打开vscode后&#xff0c;运行项目发现&#xff0c;新建终端>npm run dev 无法识别。 在cmd 中 打node -…

springboot body 转对象强验证属性多余属性抛错误

在Spring Boot中&#xff0c;当使用RequestBody注解来接收HTTP请求中的JSON数据并将其转换为Java对象时&#xff0c;Spring默认会忽略额外的属性。这意味着如果发送的JSON包含一些目标对象中没有定义的属性&#xff0c;Spring不会报错&#xff0c;这些额外的属性会被简单地忽略…

01. Linux嵌入式系统学习笔记(一)(linux基础指令)

一. linux基础操作指令 1. 新建文件和目录 (1) 新建文件 touch 命令&#xff1a;用于创建空文件。 touch filename.txt 如果文件已存在&#xff0c;touch 会更新文件的访问时间和修改时间。 (2) 新建目录 mkdir 命令&#xff1a;用于创建目录。 mkdir directoryname 使…

Java 列表复制与对象引用

Java 列表复制与对象引用 一、知识点 1. 对象引用的基本概念 在 Java 中&#xff0c;List<School> 这样的集合存储的并不是真正的对象&#xff0c;而是对象的“地址”&#xff08;引用&#xff09;。就好比你有一个文件柜&#xff0c;文件柜里放的不是文件本身&#x…