Git实现提交代码自动更新package.json版本号

此文章主要讲诉如何通过git提交代码来自动更新我们的版本号,也可以指定固定分支才能更新
只要涉及到package version的项目都可以,例如:Vue、React、Node等等
前提是当前项目已经关联了Git仓库

一、编写我们的Node更新版本逻辑,名为updateVersion.js,放置项目根目录中

const fs = require('fs');const packageJsonPath = './package.json';// 读取package.json文件
const packageJson = JSON.parse(fs.readFileSync(packageJsonPath));// 获取当前版本号
const currentVersion = packageJson.version;// 自增修订版本号
const versionParts = currentVersion.split('.');
versionParts[2] = parseInt(versionParts[2], 10) + 1;// 更新package.json文件中的版本号
packageJson.version = versionParts.join('.');// 将更新后的package.json文件写入磁盘
fs.writeFileSync(packageJsonPath, JSON.stringify(packageJson, null, 2));// 输出更新后的版本号
console.log(`版本号已更新为 ${packageJson.version}`);

二、在package.json中配置更新指令,在scripts中添加

// 后续脚本会通过npm run version进行执行
"scripts": {......,"version": "node ./updateVersion.js"
}

三、安装git 提交依赖:pre-commit

cnpm i pre-commit --save-dev

四、配置git提交前执行的指令

  • 1、pre-commit依赖安装成功后,项目根目录.git文件夹中hooks下面就会自动生成一个pre-commit文件
    在这里插入图片描述
  • 2、写入指令(无需判断分支,直接删除判断逻辑)
# 获取当前分支的名称
current_branch=$(git rev-parse --abbrev-ref HEAD)
# 判断是否为master 或者test分支 执行更新版本号操作
if [ "$current_branch" = "master" ] || [ "$current_branch" = "test" ]; thennpm run versiongit add .exit 0
fi
  • 3、完整脚本代码

npm run version就是更新版本
git add .目的再次提交更新后的版本文件
exit 0给程序返回一个识别码,0正常结束返回

#!/bin/bash
# 获取当前分支的名称
current_branch=$(git rev-parse --abbrev-ref HEAD)
# 判断是否为master 或者test分支 执行更新版本号操作
if [ "$current_branch" = "master" ] || [ "$current_branch" = "test" ]; thennpm run versiongit add .exit 0
fi
./node_modules/_pre-commit@1.2.2@pre-commit/hook
RESULT=$?
[ $RESULT -ne 0 ] && exit 1
exit 0

五、此时配置已全部完成,直接提交代码,就会发现我们package.json版本已经自动自增了🚀 🚀 🚀

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

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

相关文章

Qt与编码

ASCII码:一个字节&#xff0c;256个字符。 Unicode:字母&#xff0c;汉字都占用两个字节。 utf-8:字母一个字节&#xff0c;汉字3个字节。 gbk:字母一个字节&#xff0c;汉字2个字节。 gb2312:可以表示汉字&#xff0c;gb2312<gbk。 编码查看&#xff1a; https://www.…

实时通讯技术实现

实时通讯技术实现 前言 在CS架构中&#xff0c;经常会有实时通信的需求。客户端和服务端建立连接&#xff0c;服务端实时推送数据给客户端。本文介绍几种常见的实现方式&#xff0c;希望能给读者们一点点参考。 实时通讯的主要实现技术 长轮询(Long Polling) WebSocket 服务器发…

C++初阶篇----内存管理

目录 引言1. 内存分布2.C动态内存管理方式&#xff1a;malloc/calloc/realloc/free3. C动态内存管理:new和delete3.1内置类型3.2 自定义类型 4.operator new与operator delete函数4.1 operator new 与operator delete函数 5. new和delete的实现底层5.1 内置类型5.2 自定义类型 …

Redis 特性,为什么要用Redis,Redis到底是多线程还是单线程

一、Redis介绍 Redis&#xff08;Remote Dictionary Server )&#xff0c;即远程字典服务&#xff0c;是一个开源的&#xff0c;使用C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库&#xff0c;并提供多种语言的API。 二、特性(为什么要用Redis&#x…

如何注册谷歌邮箱gmail

不知道大家在工作生活中有没有需要用到谷歌邮箱的地方&#xff0c;但是最近我就用到了它。因为注册ChatGPT的事&#xff0c;用了outlook&#xff0c;hotmail邮箱注册的gpt账号都被封了&#xff0c;然后通过各方面的了解&#xff0c;发现谷歌的邮箱是没有问题的&#xff0c;不会…

基于springboot的人事管理系统

人事管理系统 摘 要 人事管理系统理工作是一种繁琐的&#xff0c;务求准确迅速的信息检索工作。随着计算机信息技术的飞速发展&#xff0c;人类进入信息时代&#xff0c;社会的竞争越来越激烈&#xff0c;人事就越显示出其不可或缺性&#xff0c;成为学校一个非常重要的模块。…

小狐狸JSON-RPC:钱包连接,断开连接,监听地址改变

detect-metamask 创建连接&#xff0c;并监听钱包切换 一、连接钱包&#xff0c;切换地址&#xff08;监听地址切换&#xff09;&#xff0c;断开连接 使用npm安装 metamask/detect-provider在您的项目目录中&#xff1a; npm i metamask/detect-providerimport detectEthereu…

36-递归与迭代

36-1 用递归和迭代解决问题 1、求n的阶乘 公式&#xff1a; n!123...(n-1)n。用递归方式定义&#xff1a;0!1&#xff0c;n!(n-1)!n。 代码1&#xff1a; 我们先回忆一下之前用循环怎么实现的吧 非递归&#xff0c;也可称迭代&#xff1a; int main() {int n 0;scanf(&q…

书生浦语训练营2期-第一节课笔记

笔记总结: 了解大模型的发展方向、本质、以及新一代数据清洗过滤技术、从模型到应用的典型流程、获取数据集的网站、不同微调方式的使用场景和训练数据是什么&#xff0c;以及预训练和微调在训练优势、通信/计算调度、显存管理上的区别。 收获&#xff1a; 理清了预训练和微调…

Laya1.8.4 UI长按选择对应位置释放技能

需求&#xff1a; 需要实现拖拽摇杆选择技能释放位置&#xff0c;释放技能。 原理&#xff1a;首先拆分需求&#xff0c;分为两部分&#xff0c;UI部分和场景部分&#xff0c;UI部分需要实现长按效果&#xff0c;长按后又要有拖动效果&#xff0c;将官方文档的示例代码改了改…

[机器学习]练习KNN算法-曼哈顿距离

曼哈顿距离(Manhattan distance) 曼哈顿距离是指在几何空间中两点之间的距离&#xff0c;其计算方法是通过将两点在各个坐标轴上的差值的绝对值相加得到。在二维空间中&#xff0c;曼哈顿距离可以表示为两点在横纵坐标上的差值的绝对值之和&#xff1b;在三维空间中&#xff0…

第十五届蓝桥杯第三期模拟赛第十题 ← 上楼梯

【问题描述】 小蓝要上一个楼梯&#xff0c;楼梯共有 n 级台阶&#xff08;即小蓝总共要走 n 级&#xff09;。小蓝每一步可以走 a 级、b 级或 c 级台阶。 请问小蓝总共有多少种方案能正好走到楼梯顶端&#xff1f;【输入格式】 输入的第一行包含一个整数 n 。 第二行包含三个整…