feat: 配置Husky pre-commit钩子 - 提交前自动执行前端构建检查
- 创建.husky/pre-commit文件 - 配置提交前自动执行npm run build:dev检查语法 - 添加node_modules存在性校验 - 预留ESLint检查接口(待赵云配置后启用) - 更新openhis-ui-vue3/package.json添加lint-staged配置 【关羽】构建门禁第一步落地
This commit is contained in:
@@ -1,9 +1,51 @@
|
|||||||
#!/usr/bin/env sh
|
#!/usr/bin/env sh
|
||||||
# 前端构建检查
|
# ============================================================
|
||||||
cd openhis-ui-vue3
|
# Husky Pre-commit Hook - HIS项目
|
||||||
# 检查是否安装了lint-staged或eslint
|
# 配置: 关羽 | 日期: 2026-04-24
|
||||||
if npm list --depth=0 | grep -q "eslint"; then
|
# 功能: 提交前自动检查前端构建
|
||||||
npm run lint -- --max-warnings 0
|
# ============================================================
|
||||||
|
|
||||||
|
echo "========================================"
|
||||||
|
echo "🔍 [Pre-commit] HIS项目提交检查"
|
||||||
|
echo "========================================"
|
||||||
|
|
||||||
|
# 检查前端目录是否存在
|
||||||
|
if [ ! -d "openhis-ui-vue3" ]; then
|
||||||
|
echo "⚠️ [Pre-commit] 未找到openhis-ui-vue3目录,跳过前端检查"
|
||||||
|
exit 0
|
||||||
fi
|
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 "========================================"
|
||||||
|
|||||||
@@ -16,7 +16,8 @@
|
|||||||
"test": "vitest",
|
"test": "vitest",
|
||||||
"test:run": "vitest run",
|
"test:run": "vitest run",
|
||||||
"test:coverage": "vitest run --coverage",
|
"test:coverage": "vitest run --coverage",
|
||||||
"test:ui": "vitest --ui"
|
"test:ui": "vitest --ui",
|
||||||
|
"prepare": "cd .. && husky openhis-ui-vue3/.husky"
|
||||||
},
|
},
|
||||||
"repository": {
|
"repository": {
|
||||||
"type": "git",
|
"type": "git",
|
||||||
@@ -80,5 +81,14 @@
|
|||||||
"vite-plugin-vue-mcp": "^0.3.2",
|
"vite-plugin-vue-mcp": "^0.3.2",
|
||||||
"vitest": "^4.0.18",
|
"vitest": "^4.0.18",
|
||||||
"vue-tsc": "^3.1.8"
|
"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中执行\""
|
||||||
|
]
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
Reference in New Issue
Block a user