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 小时前
[ VUE ] 封装通用数组校验组件,el-input内使用
前端·javascript·vue.js
弓.长.19 小时前
React Native 鸿蒙跨平台开发:实现一个多功能单位转换器
javascript·react native·react.js
南半球与北海道#19 小时前
前端打印(三联纸票据打印)
前端·vue.js·打印
摘星编程20 小时前
React Native for OpenHarmony 实战:ToggleSwitch 切换开关详解
javascript·react native·react.js
董世昌4120 小时前
深入浅出 JavaScript 常用事件:从原理到实战的全维度解析
前端
满栀58520 小时前
分页插件制作
开发语言·前端·javascript·jquery
qq_4061761420 小时前
深入剖析JavaScript原型与原型链:从底层机制到实战应用
开发语言·前端·javascript·原型模式
弓.长.21 小时前
React Native 鸿蒙跨平台开发:BottomSheet 底部面板详解
javascript·react native·react.js
开开心心_Every21 小时前
免费窗口置顶小工具:支持多窗口置顶操作
服务器·前端·学习·macos·edge·powerpoint·phpstorm
摘星编程21 小时前
React Native for OpenHarmony 实战:Permissions 权限管理详解
javascript·react native·react.js