Web项目-版本号

背景

前端项目上线验证,一般都是看功能,没有版本号一说(有的话也是git打标),有些项目部署好几套,中间还不停迭代,久而久之可能就记不清楚项目版本了。因此,前端的版本号管理/记录是有存在必要的,如何使用那就各自发挥了。

方案

  1. 更改 package.json 中的版本号
  2. 版本号写入 public/version 文件
  3. git 打标、推送

每次打包前运行脚本,标记版本后打包发布。

脚本

bash 复制代码
#!/bin/bash

# 定义版本号文件路径 package.json,可按需修改
VERSION_FILE="package.json"

# 检查版本号文件是否存在
if [ ! -f "$VERSION_FILE" ]; then
    echo "错误:版本号文件 $VERSION_FILE 不存在。"
    exit 1
fi

# 提取当前版本号
CURRENT_VERSION=$(grep -oE '"version": "[^"]+"' "$VERSION_FILE" | cut -d'"' -f4)

# 检查是否成功提取版本号
if [ -z "$CURRENT_VERSION" ]; then
    echo "错误:无法从 $VERSION_FILE 中提取版本号,请检查文件格式。"
    exit 1
fi

# 打印提取的版本号用于调试
echo "提取的当前版本号: $CURRENT_VERSION"

# 将版本号按 . 分割成数组
IFS='.' read -r -a VERSION_PARTS <<< "$CURRENT_VERSION"
MAJOR=${VERSION_PARTS[0]}
MINOR=${VERSION_PARTS[1]}
PATCH=${VERSION_PARTS[2]}

# 检查版本号是否符合 X.Y.Z 格式
if [ -z "$MAJOR" ] || [ -z "$MINOR" ] || [ -z "$PATCH" ]; then
    echo "错误:版本号 $CURRENT_VERSION 格式不正确,应符合 X.Y.Z 格式。"
    exit 1
fi

# 提示用户选择更新类型
echo "请选择要更新的版本类型:"
echo "1. 大版本 (MAJOR)"
echo "2. 小版本 (MINOR)"
echo "3. 补丁版本 (PATCH)"
read -p "输入对应的数字 (1/2/3): " UPDATE_CHOICE

case $UPDATE_CHOICE in
    1)
        NEW_MAJOR=$((MAJOR + 1))
        NEW_MINOR=0
        NEW_PATCH=0
        NEW_VERSION="${NEW_MAJOR}.${NEW_MINOR}.${NEW_PATCH}"
        ;;
    2)
        NEW_MINOR=$((MINOR + 1))
        NEW_PATCH=0
        NEW_VERSION="${MAJOR}.${NEW_MINOR}.${NEW_PATCH}"
        ;;
    3)
        NEW_PATCH=$((PATCH + 1))
        NEW_VERSION="${MAJOR}.${MINOR}.${NEW_PATCH}"
        ;;
    *)
        echo "错误:无效的选择,请输入 1、2 或 3。"
        exit 1
        ;;
esac

# 更新版本号文件
if [[ "$(uname)" == "Darwin" ]]; then
    # macOS 系统
    sed -i '' "s/\"version\": \"$CURRENT_VERSION\"/\"version\": \"$NEW_VERSION\"/" "$VERSION_FILE"
else
    # Linux 系统
    sed -i "s/\"version\": \"$CURRENT_VERSION\"/\"version\": \"$NEW_VERSION\"/" "$VERSION_FILE"
fi

# 检查更新是否成功
UPDATED_VERSION=$(grep -oE '"version": "[^"]+"' "$VERSION_FILE" | cut -d'"' -f4)
if [ "$UPDATED_VERSION" != "$NEW_VERSION" ]; then
    echo "错误:版本号更新失败。"
    exit 1
fi

# 更新 version 文件
echo $NEW_VERSION > public/version

echo "版本号已从 $CURRENT_VERSION 更新到 $NEW_VERSION"

# 提交版本号更改
git add "$VERSION_FILE"
if ! git commit -m "Update version to $NEW_VERSION"; then
    echo "错误:Git 提交失败,请检查 Git 状态。"
    exit 1
fi

# 打标签
if ! git tag -a "$NEW_VERSION" -m "Release $NEW_VERSION"; then
    echo "错误:Git 打标签失败。"
    exit 1
fi

# 推送提交和标签
if ! git push origin main; then
    echo "错误:推送提交到远程仓库失败。"
    exit 1
fi

if ! git push origin "$NEW_VERSION"; then
    echo "错误:推送标签到远程仓库失败。"
    exit 1
fi

echo "版本更新、打标和推送完成"
相关推荐
亿元程序员15 小时前
Creator都快4.0了,怎么能没有这样的功能?
前端
q***649715 小时前
SpringMVC 请求参数接收
前端·javascript·算法
万少15 小时前
流碧卡片 6 小时闪电开发 AI gemini-3-pro-preview ! 秒出小红书爆款图,免下载直接用
前端·后端·ai编程
向葭奔赴♡15 小时前
若依系统权限控制全流程解析
前端·javascript·vue.js·ruoyi·navicat
IT_陈寒15 小时前
Python开发者必知的5个高效技巧,让你的代码性能提升50%
前端·人工智能·后端
u***u68515 小时前
Vue虚拟现实案例
前端·vue.js·vr
q***965815 小时前
springboot3整合knife4j详细版,包会!(不带swagger2玩)
android·前端·后端
艾小码15 小时前
Vue 3 defineProps 与 defineEmits 深度解析
前端·javascript·vue.js
前端炒粉18 小时前
35.LRU 缓存
开发语言·javascript·数据结构·算法·缓存·js
巧克力芋泥包19 小时前
前端使用阿里云图形验证码;并且与安卓进行交互
android·前端·阿里云