hookehuyr

chore(husky): 修复 git hooks 问题

- 移除废弃的 shebang 和 husky.sh 导入
- 修复 pre-commit hook 中的 ESLint 文件列表传递问题
- 移除所有交互式确认,改为提示信息
- 添加 husky 和 chore 到允许的 commit scope 列表
- 优化 hooks 以兼容 husky v10

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
#!/usr/bin/env sh
. "$(dirname -- "$0")/_/husky.sh"
# 颜色定义
RED='\033[0;31m'
GREEN='\033[0;32m'
......@@ -24,7 +21,7 @@ echo ""
TYPES="feat|fix|docs|style|refactor|perf|test|chore|revert"
# 允许的范围(常见模块)
SCOPES="material|product|user|auth|api|ui|config|build|ci|release"
SCOPES="material|product|user|auth|api|ui|config|build|ci|release|husky|chore"
# 正则表达式:type(scope): subject
# 示例:feat(material): 添加文档列表分类导航
......
#!/usr/bin/env sh
. "$(dirname -- "$0")/_/husky.sh"
# 颜色定义
GREEN='\033[0;32m'
BLUE='\033[0;34m'
......
#!/usr/bin/env sh
. "$(dirname -- "$0")/_/husky.sh"
# 颜色定义
RED='\033[0;31m'
GREEN='\033[0;32m'
......@@ -28,10 +25,10 @@ else
echo " - $file"
done
# 运行 ESLint
# 运行 ESLint(检查整个 src 目录,避免文件列表传递问题)
echo ""
echo " 🔍 运行 ESLint..."
if ! pnpm lint --quiet "$STAGED_FILES"; then
if ! pnpm lint --quiet; then
echo ""
echo " ${RED}❌ ESLint 检查失败${NC}"
echo " ${YELLOW}请运行 'pnpm lint' 查看详细错误并修复${NC}"
......@@ -56,12 +53,6 @@ if [ -n "$STAGED_FILES" ]; then
echo " ${YELLOW}⚠️ 发现 console.log/debug/info 语句${NC}"
echo " ${YELLOW}建议:生产代码应移除调试语句${NC}"
echo ""
echo " 是否继续提交?(y/n)"
read -r response
if [ ! "$response" = "y" ]; then
echo " ${RED}❌ 已取消提交${NC}"
exit 1
fi
fi
# 检查 debugger
......@@ -119,18 +110,11 @@ if [ "$NEEDS_REVIEW" = true ]; then
echo " ${YELLOW}原因:${NC}"
echo "$REVIEW_REASON"
echo ""
echo " ${BLUE}在 VSCode 中让 Claude Code 进行审查:${NC}"
echo " ${BLUE}建议在 VSCode 中让 Claude Code 进行审查:${NC}"
echo " 1. 保存所有文件"
echo " 2. 对 Claude Code 说:'请审查我的代码改动'"
echo " 3. 根据审查报告修复 P0 问题"
echo " 4. 重新提交"
echo ""
echo " ${YELLOW}是否跳过审查继续提交?(y/n)${NC}"
read -r response
if [ ! "$response" = "y" ]; then
echo " ${RED}❌ 已取消提交,请先进行代码审查${NC}"
exit 1
fi
fi
echo " ${GREEN}✅ 改动规模检查通过${NC}"
......@@ -163,12 +147,6 @@ if [ -z "$CHANGELOG_MODIFIED" ]; then
echo " - **测试状态**: 已通过"
echo " - **备注**: 其他说明"
echo ""
echo " ${YELLOW}是否继续提交(不更新 CHANGELOG)?(y/n)${NC}"
read -r response
if [ ! "$response" = "y" ]; then
echo " ${RED}❌ 已取消提交,请先更新 CHANGELOG.md${NC}"
exit 1
fi
else
echo " ${GREEN}✅ CHANGELOG.md 已更新${NC}"
fi
......
#!/usr/bin/env sh
. "$(dirname -- "$0")/_/husky.sh"
# 颜色定义
RED='\033[0;31m'
GREEN='\033[0;32m'
......@@ -16,17 +13,11 @@ echo ""
CURRENT_BRANCH=$(git rev-parse --abbrev-ref HEAD)
REMOTE_BRANCH=$(git rev-parse --abbrev-ref --symbolic-full-name @{u} 2>/dev/null || echo "")
# 如果是新分支,提示用户
# 如果是新分支,自动继续
if [ -z "$REMOTE_BRANCH" ]; then
echo " ${YELLOW}⚠️ 检测到新分支: $CURRENT_BRANCH${NC}"
echo " ${YELLOW}这将是首次推送到远程${NC}"
echo ""
echo " ${BLUE}是否继续?(y/n)${NC}"
read -r response
if [ ! "$response" = "y" ]; then
echo " ${RED}❌ 已取消 Push${NC}"
exit 1
fi
fi
# ============================================
......@@ -44,12 +35,6 @@ if [ "$UNPUSHED_COMMITS" -gt 5 ]; then
echo " ${BLUE}最近的提交:${NC}"
git log --oneline -5
echo ""
echo " ${YELLOW}是否继续推送?(y/n)${NC}"
read -r response
if [ ! "$response" = "y" ]; then
echo " ${RED}❌ 已取消 Push${NC}"
exit 1
fi
fi
echo " ${GREEN}✅ 提交历史检查通过${NC}"
......@@ -71,14 +56,6 @@ echo ""
echo " ${BLUE}即将推送的提交:${NC}"
git log --oneline @{u}..HEAD 2>/dev/null || git log --oneline -3
echo ""
echo " ${YELLOW}是否确认推送?(y/n)${NC}"
read -r response
if [ ! "$response" = "y" ]; then
echo " ${RED}❌ 已取消 Push${NC}"
exit 1
fi
# ============================================
# 所有检查通过
# ============================================
......