hookehuyr

chore(scripts): 移除版本自动更新脚本

该脚本原本用于在提交时根据 commit 类型自动更新 package.json 版本号,但其逻辑存在冗余且维护成本高。决定移除该脚本,后续版本管理将采用更明确的手动或 CI 流程控制。
1 -#!/bin/bash
2 -
3 -###############################################################################
4 -# 版本自动更新脚本(内联版本)
5 -#
6 -# 功能:根据 commit message 类型自动更新 package.json 版本号
7 -# 规则:遵循 Semantic Versioning
8 -# - feat: MINOR (1.x.x → 1.y.0)
9 -# - fix: PATCH (x.y.z → x.y.(z+1))
10 -# - perf: MINOR
11 -# - 其他: 不更新
12 -#
13 -# 使用方式:commit-msg hook 中通过 source 调用此脚本
14 -###############################################################################
15 -
16 -set -e
17 -
18 -# 颜色定义
19 -RED='\033[0;31m'
20 -GREEN='\033[0;32m'
21 -YELLOW='\033[1;33m'
22 -BLUE='\033[0;34m'
23 -NC='\033[0m'
24 -
25 -# 获取 commit message(从环境变量获取,由 husky 传递)
26 -COMMIT_MSG="${HUSKY_COMMIT_MSG}"
27 -
28 -# 提取 type(feat|fix|perf)
29 -if [[ $COMMIT_MSG =~ ^feat[[:/\(]] ]]; then
30 - TYPE="feat"
31 -elif [[ $COMMIT_MSG =~ ^fix[[:/\] ]]; then
32 - TYPE="fix"
33 -elif [[ $COMMIT_MSG =~ ^perf[[:/\] ]]; then
34 - TYPE="perf"
35 -else
36 - echo "${YELLOW}ℹ️ $TYPE 类型不触发版本更新${NC}"
37 - exit 0
38 -fi
39 -
40 -echo "📋 Type: ${TYPE:-none}"
41 -
42 -# 读取当前版本
43 -CURRENT=$(node -p "require('./package.json').version")
44 -echo "📌 当前版本: ${CURRENT}"
45 -echo ""
46 -
47 -# 解析版本号 (MAJOR.MINOR.PATCH)
48 -IFS='.' read -r -a <<< "$CURRENT"
49 -MAJOR=${VERSION_ARRAY[0]}
50 -MINOR=${VERSION_ARRAY[1]}
51 -PATCH=${VERSION_ARRAY[2]}
52 -
53 -# 版本更新逻辑
54 -case $TYPE in
55 - feat|perf)
56 - # MINOR 版本更新:1.0.0 → 1.1.0
57 - MINOR=$((MINOR + 1))
58 - PATCH=0
59 - ;;
60 - fix)
61 - # PATCH 版本更新:1.0.0 → 1.0.1
62 - PATCH=$((PATCH + 1))
63 - ;;
64 -esac
65 - echo "${YELLOW}ℹ️ $TYPE 类型不触发版本更新${NC}"
66 - exit 0
67 - ;;
68 -esac
69 - echo "${YELLOW}ℹ️ revert 类型不触发版本更新${NC}"
70 - exit 0
71 - ;;
72 -esac
73 - echo "${YELLOW}ℹ️ chore 类型不触发版本更新${NC}"
74 - exit 0
75 - ;;
76 -esac
77 - echo "${YELLOW}ℹ️ style 类型不触发版本更新${NC}"
78 - exit 0
79 - ;;
80 -esac
81 - echo "${YELLOW}ℹ️ test 类型不触发版本更新${NC}"
82 - exit 0
83 - ;;
84 -esac
85 - echo "${YELLOW}ℹ️ docs 类型不触发版本更新${NC}"
86 - exit 0
87 - ;;
88 -esac
89 - echo "${YELLOW}ℹ️ refactor 类型不触发版本更新${NC}"
90 - exit 0
91 - ;;
92 -esac
93 - echo "${YELLOW}ℹ️ build 类型不触发版本更新${NC}"
94 - exit 0
95 - ;;
96 -esac
97 - echo "${YELLOW}ℹ️ ci 类型不触发版本更新${NC}"
98 - exit 0
99 - ;;
100 -esac
101 - echo "${YELLOW}ℹ️ revert 类型不触发版本更新${NC}"
102 - exit 0
103 - ;;
104 -esac
105 - echo "${YELLOW}ℹ️ unknown 类型不触发版本更新${NC}"
106 - exit 0
107 - ;;
108 -esac
109 - echo "${RED}❌ 无法识别的 commit type${NC}"
110 - exit 1
111 - ;;
112 -esac
113 -
114 -# 计算新版本
115 -NEW="${MAJOR}.${MINOR}.${PATCH}"
116 -
117 -# 更新 package.json
118 -npm version --no-git-tag-version "$NEW" >/dev/null 2>&1
119 -
120 -# 检查版本是否真的变化了
121 -if [ "$NEW" = "$CURRENT" ]; then
122 - echo "${YELLOW}⚠️ 版本未变化,跳过更新${NC}"
123 - exit 0
124 -fi
125 -
126 -echo ""
127 -echo "${GREEN}✅ 版本已更新: ${CURRENT}${NEW}${NC}"
128 -echo ""