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 "版本更新、打标和推送完成"
相关推荐
Asort3 小时前
JavaScript设计模式(十一):享元模式(Flyweight) - 优化内存与性能的利器
前端·javascript·设计模式
Asort3 小时前
JavaScript设计模式(十)——外观模式 (Facade)
前端·javascript·设计模式
创码小奇客3 小时前
前端小白从零到一:架构师视角下的学习路线与实战指南
前端·javascript·架构
星链引擎3 小时前
智能聊天机器人落地指南 场景案例、代码集成与优化策略
前端
我是天龙_绍3 小时前
ES6 Class 类的基本语法
前端
掘金安东尼3 小时前
⏰前端周刊第435期(2025年10月6日–10月12日)
前端·javascript·github
这可不简单3 小时前
前端面试题:请求层缓存与并发控制的完整设计(含原理拆解)
前端·javascript·面试
卧指世阁3 小时前
深入 Comlink 源码细节——如何实现 Worker 的优雅通信
前端·前端框架·源码
恋猫de小郭3 小时前
深入理解 Flutter 的 PlatformView 如何在鸿蒙平台实现混合开发
android·前端·flutter