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

学不动系列-git-hooks和husky+lintstage

git-hooks

为了保证提交的代码符合规范,可以在上传代码时进行校验。常用husky来协助进行代码提交时的eslint校验。husky是基于git-hooks来实现,在使用husky之前,我们先来研究一下git-hooks。

构建git-hooks测试项目

需要使用git-hooks就需要git环境
新建文件夹02-githook,该项目使用eslint来做代码检查,项目构建参考eslint的测试项目,如下图所示:

npm init -y
npx eslint --init
npx eslint ./src

在这里插入图片描述
测试项目构建完毕。

测试git-hooks

配置git环境

回到根目录下,输入

git init

在根目录新建文件.gitignore

# Dependency directories
node_modules/# Logs
logs
.pnpm-debug.log*
# Optional npm cache directory
.npm# Optional eslint cache
.eslintcache

我们可以看到存在一个.git名称的文件夹,事实上,在我们项目中根目录下运行git命令时,git会根据它来工作,接下来我们进入到这个.git文件夹中
在这里插入图片描述
可以看到存在一个hooks文件夹,该文件夹提供过了git命令相关的钩子,也可以直接在vscode中查看,可能有些人的vscode中看不到.git文件夹,只需要在settings.json中配置一下即可

{"files.exclude":{"**/.git": false}
}

在这里插入图片描述
可以看到hooks文件夹中有很多xxxx.sample的文件,这些文件都是git的hooks,不同的名称有不同的作用如pre-commit.sample就是提交代码到git前触发,这些命令只要我们配置好就会帮助我们去执行,比如现在我们的需求是每次提交git代码之前检查一下代码是否有问题,运行eslint命令npx eslint .src/来检查代码,应该如何使用githooks?

使用githooks

  1. 重新创建一个文件,文件名为pre-commit去掉sample,其他的hooks也是如此的做法,pre-commit的内容如下:
#!/bin/sh
echo pre-commit

控制台输出文字 test pre-commit,代表成功的使用githooks,
2. 这里的echo test pre-commit脚本如果修改成eslint检测脚本不就可以完成需求了吗?例如修改成

#!/bin/sh
echo pre-commit && npx eslint ./src

在这里插入图片描述
修改app.js文件,输入命令

git add .

在这里插入图片描述
commit 成功后出现
在这里插入图片描述

这里又会出现一个问题,每个人开发的githooks配置都不同,没有办法做到每个人都统一,我们就需要将这个配置放在根目录下面,可以通过git同步这一部分的配置,达到同一个项目在提交代码前做代码检测,具体步骤如下:

  • 在根目录下新建文件夹.mygithooks
  • 将pre-commit放置到该文件夹下面,pre-commit的内容如下:
#!/bin/sh
echo .mygithooks pre-commit && npx eslint ./src
  • 配置git的core.hooksPath,指令如下:git config core.hooksPath .mygithooks
  • 再次提交代码,测试是否生效
    在这里插入图片描述

配置自定义的git-hooks

git config core.hooksPath .mygithooks
husky
Modern native Git hooks made easy

// 第一步:安装
npm i husky -D

// 第二步 enable git-hook
px husky install
husky - Git hooks installed

// 第三步:配置脚本
“scripts”: {
“prepare”: “husky install”
},

// 创建hook
npx husky add .husky/pre-commit “npm test”
git add .husky/pre-commit

husky

husky是基于git-hooks来实现

相关文章:

学不动系列-git-hooks和husky+lintstage

git-hooks 为了保证提交的代码符合规范,可以在上传代码时进行校验。常用husky来协助进行代码提交时的eslint校验。husky是基于git-hooks来实现,在使用husky之前,我们先来研究一下git-hooks。 构建git-hooks测试项目 需要使用git-hooks就需…...

K8S相关小技巧《四》

需求: 我作为Kubernetes的集群管理员,前一段时间有收到一个需求,需要我创建一个受限访问的用户kubeconfig,提供给跳板机的某用户。 该kubeconfig需要在非Kubernetes节点的某跳板机上由指定的非root用户使用,该用户仅能…...

Delphi 报错 Type androidx.collection.ArraySet is defined multiple times

Delphi 11 建立一个新的 Multi-Device Application 编译成app的时候报错 报错信息 [PAClient Error] Error: E7688 Unable to execute "E:\Program\Java\jdk1.8.0_301\bin\java.exe" -cp "e:\program\embarcadero\studio\22.0\bin\Android\r8-3.3.28.jar"…...

Post请求中文乱码问题

url*************************************这里填写自己请求的网址 response requests.post(url, datajson.dumps(body),headersheader) r response.text print 打印乱码长这样: data:{“code”:0,“data”:{“end”:false,“message”:“{\n “ˆ—¡A”: [“…...

LeetCode -- 79.单词搜索

1. 问题描述 给定一个 m x n 二维字符网格 board 和一个字符串单词 word 。如果 word 存在于网格中,返回 true ;否则,返回 false 。 单词必须按照字母顺序,通过相邻的单元格内的字母构成,其中“相邻”单元格是那些水…...

单元测试、集成测试、系统测试有什么不同?

单元测试、集成测试和系统测试是软件测试开发中不可或缺的部分。 单元测试: 范围:单元测试是对软件中最小的可测试单元的测试,通常是函数、方法或类。 目的:它的目标是验证每个单独的单元是否按照预期工作,以增加代码…...

数据迁移DTS | 云上MySQL 数据库迁移至达梦数据库

引入 云上 MySQL 数据库 —> 向达梦国产化数据库迁移 下载&安装 达梦客户端工具 DM->可参考之前国产化专栏达梦文章 创建模式 在客户端分别依次执行以下命令脚本(这里没有通过客户端管理工具去创建达梦数据库的模式,当然也可以通过图形化界…...

Linux进程管理:(二)进程调度原语

文章说明: Linux内核版本:5.0 架构:ARM64 参考资料及图片来源:《奔跑吧Linux内核》 Linux 5.0内核源码注释仓库地址: zhangzihengya/LinuxSourceCode_v5.0_study (github.com) 进程调度的概念比较简单&#xff0c…...

Compose 介绍

Compose 介绍 Android Compose 是 Google 官方推出的用于构建原生 Android UI 的现代工具包。它使用 Kotlin 语言编写,可以帮助开发人员更轻松、更快速地创建精美、响应式和高性能的 Android 应用。 Compose 的优势 声明式 UI: Compose 使用声明式 UI…...

5分钟搞定Python中函数的参数

函数的灵活性非常高,除了常规定义的位置参数以外,还支持默认参数、关键字参数、以及可变参数 ... 这样以来,不但能应对各种复杂的情况,甚至还可以简化调用者的代码。 位置参数 在调用函数时,一般会根据函数定义的参数…...

Gitlab: 私有化部署

目录 1. 说明 2. 资源要求 3. 安装 4. 配置实践 4.1 服务器 4.2 人员与项目 4.2 部署准备 4.2.1 访问变量及用户账号设置 4.2.2 Runner设置 4.2.3 要点 5. 应用项目 CI/CD 6. 参考 1. 说明 gitlab是一个强大且免费的代码管理/部署工具,能统一集成代码仓…...

深入理解Linux线程(LWP):概念、结构与实现机制(2)

🎬慕斯主页:修仙—别有洞天 ♈️今日夜电波:会いたい—Naomile 1:12━━━━━━️💟──────── 4:59 🔄 ◀️ ⏸ ▶️ ☰ &a…...

VBS脚本搞定,快速批量提取一堆Excel文件中的数据

1.需求诞生 小王就职于一家国有大型企业,工作业务十分繁忙,在处理企业某业务数据时,需要从上千个Excel文件中提取某一单元格位置的数据,并整理到另一个Excel文件。要说是这样的Excel文件仅有几个或者十几个也还好,手动…...

大数据分析案例-基于SVM支持向量机算法构建手机价格分类预测模型

🤵‍♂️ 个人主页:艾派森的个人主页 ✍🏻作者简介:Python学习者 🐋 希望大家多多支持,我们一起进步!😄 如果文章对你有帮助的话, 欢迎评论 💬点赞&#x1f4…...

WPF 滑动条样式

效果图&#xff1a; 浅色&#xff1a; 深色&#xff1a; 滑动条部分代码&#xff1a; <Style x:Key"RepeatButtonTransparent" TargetType"{x:Type RepeatButton}"><Setter Property"OverridesDefaultStyle" Value"true"/&g…...

论文设计任务书学习文档|基于Web的个性化简历职位推荐系统的设计与实现

文章目录 论文(设计)题目:基于Web的个性化简历职位推荐系统的设计与实现1、论文(设计)的主要任务及目标2、论文(设计)的主要内容3、论文(设计)的基本要求4、进度安排论文(设计)题目:基于Web的个性化简历职位推荐系统的设计与实现 1、论文(设计)的主要任务及目标…...

Win11系统安装安卓子系统教程

随着Win11系统的不断普及&#xff0c;以及硬件设备的更新换代&#xff0c;我相信很多同学都已经更新并使用到了最新的Win11系统。那么&#xff0c;Win11系统最受期待的功能“Windows Subsystem for Android”&#xff08;简称WSA&#xff09;&#xff0c;即《安卓子系统》。他可…...

Python实现双向链表:从基础到应用

一、引言 双向链表是一种比单向链表更复杂的数据结构&#xff0c;每个节点除了包含数据和指向下一个节点的指针外&#xff0c;还包含一个指向前一个节点的指针。这种结构使得我们可以从链表的任何节点开始&#xff0c;向前或向后遍历链表。 目录 一、引言 二、节点定义 三、…...

c# 读取DataGridView中的数据

/// <summary> /// 读取DataGridView中的数据 /// </summary> /// <param name"dgv">DataGridView对象</param> /// <returns>DataTable对象</returns> private DataTable GetDgvToTab…...

Stable Diffusion中的Clip模型

基础介绍 Stable Diffusion 是一个文本到图像的生成模型&#xff0c;它能够根据用户输入的文本提示&#xff08;prompt&#xff09;生成相应的图像。在这个模型中&#xff0c;CLIP&#xff08;Contrastive Language-Image Pre-training&#xff09;模型扮演了一个关键的角色&a…...

国产与国际AI IDE工具全解析,哪个更好用(2026.4.15)

我们来对国产与国际主流AI IDE工具进行一次全面的解析。 本文将涵盖当前市场上最具代表性的工具&#xff0c;从核心定位、优缺点、定价、环境与使用方法、使用难度等多个维度进行深度对比。 一、 主流AI IDE工具全景概览 首先&#xff0c;我们将目前主流的AI编程工具分为三大…...

基于Docker与BPMN.js的Activiti流程图云端部署实战

1. 从零认识Activiti与BPMN.js 如果你正在寻找一种简单高效的方式&#xff0c;将企业业务流程搬上云端&#xff0c;那么DockerBPMN.jsActiviti的组合绝对值得尝试。Activiti作为一款轻量级工作流引擎&#xff0c;能帮你把复杂的审批流程、任务流转自动化&#xff1b;BPMN.js则是…...

Gromacs蛋白动力学模拟实战:从RMSD到回旋半径的完整分析流程

1. Gromacs蛋白动力学模拟基础入门 第一次接触Gromacs时&#xff0c;我被它复杂的命令行参数吓到了。但实际用下来发现&#xff0c;只要掌握几个核心命令&#xff0c;就能完成完整的蛋白动力学模拟流程。这里我用做菜来比喻&#xff1a;Gromacs就像一套完整的厨具&#xff0c;虽…...

Bilibili-Old:重温经典界面,找回最初的B站体验

Bilibili-Old&#xff1a;重温经典界面&#xff0c;找回最初的B站体验 【免费下载链接】Bilibili-Old 恢复旧版Bilibili页面&#xff0c;为了那些念旧的人。 项目地址: https://gitcode.com/gh_mirrors/bi/Bilibili-Old 你是否怀念那个简洁明了的B站界面&#xff1f;是否…...

从用户反馈到功能迭代:龙头复盘神器V21.0版本更新全解析(含F5快捷键+涨停原因高亮技巧)

从用户反馈到功能迭代&#xff1a;龙头复盘神器V21.0版本更新全解析 在金融投资领域&#xff0c;高效精准的复盘工具是专业交易者的"第二大脑"。最近发布的龙头复盘神器V21.0版本&#xff0c;正是研发团队历时三个月收集上千条用户反馈后的诚意之作。这次更新不仅修复…...

Pixel Script Temple 数据库课程设计实战:AI辅助生成SQL与ER图脚本

Pixel Script Temple 数据库课程设计实战&#xff1a;AI辅助生成SQL与ER图脚本 1. 课程设计的痛点与解决方案 对于高校学生来说&#xff0c;数据库课程设计往往是一个既期待又头疼的环节。期待是因为终于可以把理论知识付诸实践&#xff0c;头疼则是因为从概念到实现的过程中…...

像素史诗效果展示:研报生成过程中的‘能量值’反馈与推理稳定性监测

像素史诗效果展示&#xff1a;研报生成过程中的能量值反馈与推理稳定性监测 1. 像素史诗智识终端概览 Pixel Epic Wisdom Terminal是一款基于AgentCPM-Report大模型构建的研究报告辅助系统&#xff0c;它将枯燥的科研工作转化为一场视觉化的像素冒险。系统采用16-bit复古游戏…...

JS逆向|猿人学逆向反混淆练习平台第13题加密分析

关注它&#xff0c;不迷路。本文章中所有内容仅供学习交流&#xff0c;不可用于任何商业用途和非法用途&#xff0c;否则后果自负&#xff0c;如有侵权&#xff0c;请联系作者立即删除&#xff01;一.题目地址https://match.yuanrenxue.cn/match/13二.抓包分析先打开控制台&…...

【机器学习】从Log Loss到Cross-Entropy:二分类与多分类的损失函数本质解析

1. 从Log Loss到Cross-Entropy&#xff1a;损失函数的本质理解 第一次接触机器学习中的损失函数时&#xff0c;我被各种名词搞得晕头转向。特别是看到Log Loss&#xff08;对数损失&#xff09;、Logistic Loss&#xff08;逻辑损失&#xff09;和Cross-Entropy&#xff08;交叉…...

YOLOv8与Qwen3-14B-Int4-AWQ联动:构建智能图像描述与问答系统

YOLOv8与Qwen3-14B-Int4-AWQ联动&#xff1a;构建智能图像描述与问答系统 1. 多模态AI的惊艳组合 当计算机视觉遇上自然语言处理&#xff0c;会擦出怎样的火花&#xff1f;YOLOv8与Qwen3-14B-Int4-AWQ的联动给出了令人惊喜的答案。这套组合不仅能"看懂"图像内容&am…...