chore(frontend): 接入 ESLint、Prettier 与 Vitest 质量门禁
This commit is contained in:
Executable
+19
@@ -0,0 +1,19 @@
|
||||
#!/usr/bin/env bash
|
||||
set -euo pipefail
|
||||
|
||||
ROOT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
|
||||
MAX_LINES="${FRONTEND_MAX_LINES:-1800}"
|
||||
failed=0
|
||||
|
||||
while IFS= read -r -d '' file; do
|
||||
lines="$(wc -l < "${file}")"
|
||||
if ((lines > MAX_LINES)); then
|
||||
printf '[frontend-size] %s %s 行,超过上限 %s\n' "${file#${ROOT_DIR}/}" "${lines}" "${MAX_LINES}" >&2
|
||||
failed=1
|
||||
fi
|
||||
done < <(find "${ROOT_DIR}/frontend/src" -name '*.tsx' -not -name '*.test.tsx' -print0)
|
||||
|
||||
if ((failed != 0)); then
|
||||
exit 1
|
||||
fi
|
||||
printf '[frontend-size] 所有 React 页面均不超过 %s 行\n' "${MAX_LINES}"
|
||||
+3
-3
@@ -8,7 +8,7 @@
|
||||
# 包含:
|
||||
# 数据库:SQL 约束与迁移完整性检查
|
||||
# 后端:go vet + go build + go test
|
||||
# 前端:npm run check (prettier + eslint + typecheck) + npm run test + npm run build
|
||||
# 前端:npm run check (prettier + eslint + typecheck) + npm run test:coverage + npm run build
|
||||
#
|
||||
# 任一步骤失败即退出非零,阻止部署。
|
||||
set -euo pipefail
|
||||
@@ -113,13 +113,13 @@ if [[ "${SKIP_FRONTEND}" == "0" ]]; then
|
||||
log "前端检查目录: ${FRONTEND_DIR}"
|
||||
cd "${FRONTEND_DIR}"
|
||||
|
||||
run_step "Vue 页面大小门禁" bash "${ROOT_DIR}/scripts/check-vue-size.sh" || FAILED=1
|
||||
run_step "React 页面大小门禁" bash "${ROOT_DIR}/scripts/check-frontend-size.sh" || FAILED=1
|
||||
|
||||
if [[ ! -d node_modules ]]; then
|
||||
run_step "npm ci (首次安装依赖)" npm ci || FAILED=1
|
||||
fi
|
||||
|
||||
# npm run check = prettier --check + eslint --max-warnings=0 + vue-tsc
|
||||
# npm run check = prettier --check + eslint --max-warnings=0 + tsc --noEmit
|
||||
run_step "npm run check (prettier + eslint + typecheck)" npm run check || FAILED=1
|
||||
if [[ "${SKIP_TESTS}" == "0" ]]; then
|
||||
run_step "npm run test + coverage (vitest)" npm run test:coverage || FAILED=1
|
||||
|
||||
Reference in New Issue
Block a user