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" ]; then
    npm run version
    git 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" ]; then
    npm run version
    git add .
    exit 0
fi
./node_modules/_pre-commit@1.2.2@pre-commit/hook
RESULT=$?
[ $RESULT -ne 0 ] && exit 1
exit 0

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

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
### 回答1: package.json 用于描述一个 JavaScript 包,其中包括包的依赖,脚本,作者和其他信息。它的配置项包括:name:包的的名称;version:包的版本号;description:包的描述;main:包的入口文件;scripts:包的脚本;author:作者的名称;license:协议名称;dependencies:依赖的包;devDependencies:开发依赖的包。 ### 回答2: package.json是Node.js项目的配置文件,用于定义项目相关的信息和依赖关系。下面是package.json中常见的配置项以及对应的说明: 1. name: 项目名称,必须是唯一的字符串。 2. version: 项目版本号,遵循语义化版本规范。 3. description: 项目描述,简要说明项目的功能和特点。 4. main: 入口文件(通常是index.js),指定了项目的主要入口。 5. scripts: 脚本命令,用于定义各种项目相关的脚本。比如启动项目、构建、测试等。 6. author: 项目作者的姓名或者用户名。 7. license: 项目所采用的开源许可证类型。 8. repository: 项目的代码仓库信息,可以是远程仓库地址或者一个对象。 9. keywords: 项目的关键字,用于方便搜索和分类。 10. dependencies: 项目的生产环境依赖包列表,存放所需的正式环境依赖。 11. devDependencies: 项目的开发环境依赖包列表,存放所需的开发环境依赖。 12. peerDependencies: 项目的对等依赖包列表,用于约束项目在运行时需要的模块版本。 13. engines: 定义该项目所支持的Node.js版本范围。 14. private: 一个布尔值,指示该项目是否是私有的,如果是私有的则无法发布到公共的npm仓库。 15. scripts: 自定义脚本命令,可以在package.json中定义和使用。 以上是package.json中常见的配置项和对应的说明,通过配置这些项,可以更好地描述和管理Node.js项目。 ### 回答3: package.json是一个用于描述和定义Node.js项目中依赖关系和脚本命令的配置文件。下面是常见的package.json中的配置项及其代码说明: 1. name: 项目的名称 ``` "name": "my-project" ``` 2. version: 项目的版本号 ``` "version": "1.0.0" ``` 3. description: 项目的描述信息 ``` "description": "这是一个Node.js项目" ``` 4. main: 入口文件 ``` "main": "index.js" ``` 5. scripts: 定义可执行的脚本命令 ``` "scripts": { "start": "node index.js", "test": "mocha test.js" } ``` 6. keywords: 项目的关键字,用于搜索和分类 ``` "keywords": [ "Node.js", "项目" ] ``` 7. author: 项目的作者 ``` "author": "John Doe" ``` 8. license: 项目的许可证 ``` "license": "MIT" ``` 9. dependencies: 生产环境依赖的包 ``` "dependencies": { "express": "^4.17.1", "lodash": "^4.17.21" } ``` 10. devDependencies: 开发环境依赖的包 ``` "devDependencies": { "mocha": "^9.1.1", "chai": "^4.3.4" } ``` 11. peerDependencies: 项目所需要的对等依赖的包 ``` "peerDependencies": { "react": "^17.0.2" } ``` 12. repository: 项目的代码仓库信息 ``` "repository": { "type": "git", "url": "https://github.com/username/my-project.git" } ``` 13. bugs: 提供反馈和报告问题的链接 ``` "bugs": { "url": "https://github.com/username/my-project/issues" } ``` 14. homepage: 项目的主页链接 ``` "homepage": "https://github.com/username/my-project" ``` 以上是常见的package.json中的配置项及其代码说明。根据实际需求,可以对这些配置项进行相应的修改和添加。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

前端阿皓

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值