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 "版本更新、打标和推送完成"
相关推荐
竹林8186 分钟前
用 wagmi v2 + viem 监听链上事件,我踩了三天坑终于搞懂了实时日志与历史补全
javascript
Momo__10 分钟前
VueUse createReusableTemplate —— 单文件组件内的模板复用神器
前端·vue.js
只一14 分钟前
😭从回调地狱到 async/await:一文打通 Ajax 与 JS 异步编程
javascript
程序员小富17 分钟前
我开源了一个开发者专属的智能 JSON 工具,得到了媳妇高度认可
前端·vue.js·后端
小小小小宇17 分钟前
程序员如何给 LLM 装工具以及看懂推理过程
前端
写代码的皮筏艇17 分钟前
React中的forwardRef
前端·react.js·面试
槑有老呆25 分钟前
花三个月工资请了个 AI 程序员,结果它连青岛啤酒股价都查不了
前端
风骏时光牛马28 分钟前
Verilog开发常见问题汇总解析
前端
子兮曰30 分钟前
AI Coding Method Map:一张图看懂 AI 编程的完整链路
前端·人工智能·后端