chore(husky): 修复 git hooks 处理多行文件和正则问题
- pre-commit: 使用 tr | xargs 处理多行文件列表 - commit-msg: 简化正则避免括号转义问题
Showing
2 changed files
with
9 additions
and
10 deletions
| ... | @@ -17,15 +17,14 @@ echo "" | ... | @@ -17,15 +17,14 @@ echo "" |
| 17 | # Commit Message 格式验证 | 17 | # Commit Message 格式验证 |
| 18 | # ============================================ | 18 | # ============================================ |
| 19 | 19 | ||
| 20 | -# 允许的类型 | 20 | +# 允许的类型(使用 | 分隔而不是 |) |
| 21 | -TYPES="feat|fix|docs|style|refactor|perf|test|chore|revert" | 21 | +ALLOWED_TYPES="feat|fix|docs|style|refactor|perf|test|chore|revert" |
| 22 | 22 | ||
| 23 | # 允许的范围(常见模块) | 23 | # 允许的范围(常见模块) |
| 24 | -SCOPES="material|product|plan|user|auth|api|ui|config|build|ci|release|husky|chore" | 24 | +ALLOWED_SCOPES="material|product|plan|user|auth|api|ui|config|build|ci|release|husky|chore" |
| 25 | 25 | ||
| 26 | -# 正则表达式:type(scope): subject | 26 | +# 检查格式 - 使用简单的正则 |
| 27 | -# 示例:feat(material): 添加文档列表分类导航 | 27 | +PATTERN="^([a-z]+)\\(([a-z]+\\))?: .{1,50}" |
| 28 | -PATTERN="^($TYPES)(\(($SCOPES)\))?: .{1,50}" | ||
| 29 | 28 | ||
| 30 | # 检查格式 | 29 | # 检查格式 |
| 31 | if ! echo "$COMMIT_MSG" | grep -qE "$PATTERN"; then | 30 | if ! echo "$COMMIT_MSG" | grep -qE "$PATTERN"; then | ... | ... |
| ... | @@ -45,8 +45,8 @@ echo "" | ... | @@ -45,8 +45,8 @@ echo "" |
| 45 | echo "📋 ${BLUE}步骤 2/4: 检查调试代码${NC}" | 45 | echo "📋 ${BLUE}步骤 2/4: 检查调试代码${NC}" |
| 46 | 46 | ||
| 47 | if [ -n "$STAGED_FILES" ]; then | 47 | if [ -n "$STAGED_FILES" ]; then |
| 48 | - # 检查 console.log | 48 | + # 检查 console.log - 将换行符替换为空格 |
| 49 | - CONSOLE_LOGS=$(git diff --cached "$STAGED_FILES" | grep -E "^\+.*console\.(log|debug|info)" || true) | 49 | + CONSOLE_LOGS=$(echo "$STAGED_FILES" | tr '\n' ' ' | xargs git diff --cached | grep -E "^\+.*console\.(log|debug|info)" || true) |
| 50 | 50 | ||
| 51 | if [ -n "$CONSOLE_LOGS" ]; then | 51 | if [ -n "$CONSOLE_LOGS" ]; then |
| 52 | echo "" | 52 | echo "" |
| ... | @@ -55,8 +55,8 @@ if [ -n "$STAGED_FILES" ]; then | ... | @@ -55,8 +55,8 @@ if [ -n "$STAGED_FILES" ]; then |
| 55 | echo "" | 55 | echo "" |
| 56 | fi | 56 | fi |
| 57 | 57 | ||
| 58 | - # 检查 debugger | 58 | + # 检查 debugger - 将换行符替换为空格 |
| 59 | - DEBUGGERS=$(git diff --cached "$STAGED_FILES" | grep -E "^\+.*debugger" || true) | 59 | + DEBUGGERS=$(echo "$STAGED_FILES" | tr '\n' ' ' | xargs git diff --cached | grep -E "^\+.*debugger" || true) |
| 60 | 60 | ||
| 61 | if [ -n "$DEBUGGERS" ]; then | 61 | if [ -n "$DEBUGGERS" ]; then |
| 62 | echo "" | 62 | echo "" | ... | ... |
-
Please register or login to post a comment