diff --git a/.husky/pre-commit b/.husky/pre-commit index 2d88ca55..59525d49 100755 --- a/.husky/pre-commit +++ b/.husky/pre-commit @@ -1,9 +1,51 @@ #!/usr/bin/env sh -# 前端构建检查 -cd openhis-ui-vue3 -# 检查是否安装了lint-staged或eslint -if npm list --depth=0 | grep -q "eslint"; then - npm run lint -- --max-warnings 0 +# ============================================================ +# Husky Pre-commit Hook - HIS项目 +# 配置: 关羽 | 日期: 2026-04-24 +# 功能: 提交前自动检查前端构建 +# ============================================================ + +echo "========================================" +echo "🔍 [Pre-commit] HIS项目提交检查" +echo "========================================" + +# 检查前端目录是否存在 +if [ ! -d "openhis-ui-vue3" ]; then + echo "⚠️ [Pre-commit] 未找到openhis-ui-vue3目录,跳过前端检查" + exit 0 fi -# 执行生产构建检查 -npm run build:prod -- --mode development 2>/dev/null || exit 1 + +cd openhis-ui-vue3 + +# 检查node_modules是否存在 +if [ ! -d "node_modules" ]; then + echo "⚠️ [Pre-commit] node_modules未安装,请先执行 npm install" + echo " 提示: 首次使用或依赖变更后需要安装依赖" + exit 1 +fi + +# 执行lint检查(ESLint配置由赵云下周完善后启用) +if grep -q '"lint"' package.json 2>/dev/null; then + echo "📋 [Pre-commit] 执行Lint检查..." + if npm run lint -- --max-warnings 0 2>&1; then + echo "✅ [Pre-commit] Lint检查通过" + else + echo "❌ [Pre-commit] Lint检查失败!请修复代码规范问题" + exit 1 + fi +else + echo "⏭️ [Pre-commit] 未配置lint脚本(待赵云配置ESLint后启用)" +fi + +# 执行快速构建检查(development模式,仅检查语法和类型) +echo "🔨 [Pre-commit] 执行构建检查 (build:dev)..." +if timeout 120 npm run build:dev 2>&1; then + echo "✅ [Pre-commit] 构建检查通过" +else + echo "❌ [Pre-commit] 构建检查失败!请修复编译错误后重新提交" + exit 1 +fi + +echo "========================================" +echo "✅ [Pre-commit] 所有检查通过,允许提交" +echo "========================================" diff --git a/openhis-ui-vue3/package.json b/openhis-ui-vue3/package.json index 46fbc042..1a48378c 100644 --- a/openhis-ui-vue3/package.json +++ b/openhis-ui-vue3/package.json @@ -16,7 +16,8 @@ "test": "vitest", "test:run": "vitest run", "test:coverage": "vitest run --coverage", - "test:ui": "vitest --ui" + "test:ui": "vitest --ui", + "prepare": "cd .. && husky openhis-ui-vue3/.husky" }, "repository": { "type": "git", @@ -80,5 +81,14 @@ "vite-plugin-vue-mcp": "^0.3.2", "vitest": "^4.0.18", "vue-tsc": "^3.1.8" + }, + "lint-staged": { + "openhis-ui-vue3/**/*.{js,vue,ts}": [ + "cd openhis-ui-vue3 && npm run lint -- --fix", + "cd openhis-ui-vue3 && npm run build:dev" + ], + "**/*.{js,vue,ts}": [ + "echo \"文件变更已记录,构建检查将在pre-commit中执行\"" + ] } -} +} \ No newline at end of file