chore: .env.development → .example + pre-commit 모노레포 대응
- .env.development을 git에서 제거, .example로 대체 (서버 정책 준수) - pre-commit hook을 frontend/ 기준으로 수정 (모노레포 구조) - custom_pre_commit 플래그 활성화 Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
부모
3ced9ffaaa
커밋
a7f3490091
@ -1,6 +1,7 @@
|
|||||||
{
|
{
|
||||||
"applied_global_version": "1.6.1",
|
"applied_global_version": "1.6.1",
|
||||||
"applied_date": "2026-04-06",
|
"applied_date": "2026-04-07",
|
||||||
"project_type": "react-ts",
|
"project_type": "react-ts",
|
||||||
"gitea_url": "https://gitea.gc-si.dev"
|
"gitea_url": "https://gitea.gc-si.dev",
|
||||||
|
"custom_pre_commit": true
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1,28 +1,32 @@
|
|||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
#==============================================================================
|
#==============================================================================
|
||||||
# pre-commit hook (Monorepo: frontend + backend)
|
# pre-commit hook (모노레포: frontend/ 디렉토리 기준)
|
||||||
# 변경된 영역만 선택적으로 검증
|
# TypeScript 컴파일 + 린트 검증 — 실패 시 커밋 차단
|
||||||
#==============================================================================
|
#==============================================================================
|
||||||
|
|
||||||
# 스테이징된 파일 목록
|
# frontend 변경 파일이 있는지 확인
|
||||||
STAGED=$(git diff --cached --name-only --diff-filter=ACM)
|
FRONTEND_CHANGED=$(git diff --cached --name-only -- 'frontend/' | head -1)
|
||||||
|
|
||||||
# frontend 변경 확인
|
if [ -z "$FRONTEND_CHANGED" ]; then
|
||||||
FRONTEND_CHANGED=$(echo "$STAGED" | grep -E '^frontend/' || true)
|
echo "pre-commit: frontend 변경 없음, 검증 건너뜀"
|
||||||
|
exit 0
|
||||||
|
fi
|
||||||
|
|
||||||
# backend 변경 확인
|
echo "pre-commit: TypeScript 타입 체크 중..."
|
||||||
BACKEND_CHANGED=$(echo "$STAGED" | grep -E '^backend/' || true)
|
|
||||||
|
|
||||||
# === Frontend 검증 ===
|
|
||||||
if [ -n "$FRONTEND_CHANGED" ] && [ -d "frontend" ]; then
|
|
||||||
echo "pre-commit: frontend TypeScript 타입 체크 중..."
|
|
||||||
|
|
||||||
|
# npm 확인
|
||||||
if ! command -v npx &>/dev/null; then
|
if ! command -v npx &>/dev/null; then
|
||||||
echo "경고: npx가 설치되지 않았습니다. 검증을 건너뜁니다."
|
echo "경고: npx가 설치되지 않았습니다. 검증을 건너뜁니다."
|
||||||
elif [ ! -d "frontend/node_modules" ]; then
|
exit 0
|
||||||
echo "경고: frontend/node_modules가 없습니다. 'cd frontend && npm install' 후 다시 시도하세요."
|
fi
|
||||||
|
|
||||||
|
# node_modules 확인 (모노레포: frontend/ 기준)
|
||||||
|
if [ ! -d "frontend/node_modules" ]; then
|
||||||
|
echo "경고: frontend/node_modules가 없습니다. 'cd frontend && npm install' 실행 후 다시 시도하세요."
|
||||||
exit 1
|
exit 1
|
||||||
else
|
fi
|
||||||
|
|
||||||
|
# TypeScript 타입 체크 (frontend/ 디렉토리에서 실행)
|
||||||
(cd frontend && npx tsc --noEmit --pretty 2>&1)
|
(cd frontend && npx tsc --noEmit --pretty 2>&1)
|
||||||
TSC_RESULT=$?
|
TSC_RESULT=$?
|
||||||
|
|
||||||
@ -30,44 +34,29 @@ if [ -n "$FRONTEND_CHANGED" ] && [ -d "frontend" ]; then
|
|||||||
echo ""
|
echo ""
|
||||||
echo "╔══════════════════════════════════════════════════════════╗"
|
echo "╔══════════════════════════════════════════════════════════╗"
|
||||||
echo "║ TypeScript 타입 에러! 커밋이 차단되었습니다. ║"
|
echo "║ TypeScript 타입 에러! 커밋이 차단되었습니다. ║"
|
||||||
|
echo "║ 타입 에러를 수정한 후 다시 커밋해주세요. ║"
|
||||||
echo "╚══════════════════════════════════════════════════════════╝"
|
echo "╚══════════════════════════════════════════════════════════╝"
|
||||||
|
echo ""
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
echo "pre-commit: 타입 체크 성공"
|
echo "pre-commit: 타입 체크 성공"
|
||||||
|
|
||||||
# ESLint
|
# ESLint 검증 (설정 파일이 있는 경우만)
|
||||||
if [ -f "frontend/eslint.config.js" ] || [ -f "frontend/eslint.config.mjs" ]; then
|
if [ -f "frontend/.eslintrc.js" ] || [ -f "frontend/.eslintrc.json" ] || [ -f "frontend/.eslintrc.cjs" ] || [ -f "frontend/eslint.config.js" ] || [ -f "frontend/eslint.config.mjs" ]; then
|
||||||
echo "pre-commit: frontend ESLint 검증 중..."
|
echo "pre-commit: ESLint 검증 중..."
|
||||||
(cd frontend && npx eslint src/ --quiet 2>&1)
|
(cd frontend && npx eslint src/ --ext .ts,.tsx --quiet 2>&1)
|
||||||
LINT_RESULT=$?
|
LINT_RESULT=$?
|
||||||
|
|
||||||
if [ $LINT_RESULT -ne 0 ]; then
|
if [ $LINT_RESULT -ne 0 ]; then
|
||||||
echo ""
|
echo ""
|
||||||
echo "╔══════════════════════════════════════════════════════════╗"
|
echo "╔══════════════════════════════════════════════════════════╗"
|
||||||
echo "║ ESLint 에러! 커밋이 차단되었습니다. ║"
|
echo "║ ESLint 에러! 커밋이 차단되었습니다. ║"
|
||||||
echo "║ 'cd frontend && npm run lint:fix'로 자동 수정 시도. ║"
|
echo "║ 'cd frontend && npm run lint -- --fix'로 수정하세요. ║"
|
||||||
echo "╚══════════════════════════════════════════════════════════╝"
|
echo "╚══════════════════════════════════════════════════════════╝"
|
||||||
|
echo ""
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
echo "pre-commit: ESLint 통과"
|
echo "pre-commit: ESLint 통과"
|
||||||
fi
|
fi
|
||||||
fi
|
|
||||||
fi
|
|
||||||
|
|
||||||
# === Backend 검증 ===
|
|
||||||
if [ -n "$BACKEND_CHANGED" ] && [ -d "backend" ] && [ -f "backend/pom.xml" ]; then
|
|
||||||
echo "pre-commit: backend 컴파일 체크 중..."
|
|
||||||
(cd backend && ./mvnw compile -q 2>&1)
|
|
||||||
MVN_RESULT=$?
|
|
||||||
|
|
||||||
if [ $MVN_RESULT -ne 0 ]; then
|
|
||||||
echo ""
|
|
||||||
echo "╔══════════════════════════════════════════════════════════╗"
|
|
||||||
echo "║ Backend 컴파일 에러! 커밋이 차단되었습니다. ║"
|
|
||||||
echo "╚══════════════════════════════════════════════════════════╝"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
echo "pre-commit: backend 컴파일 성공"
|
|
||||||
fi
|
|
||||||
|
|
||||||
exit 0
|
|
||||||
|
|||||||
6
.gitignore
vendored
6
.gitignore
vendored
@ -29,9 +29,9 @@ Thumbs.db
|
|||||||
.env
|
.env
|
||||||
.env.*
|
.env.*
|
||||||
!.env.example
|
!.env.example
|
||||||
# 프론트엔드 환경별 설정 (Vite VITE_* 변수, 배포 빌드에 필요)
|
# 프론트엔드 환경별 설정 (.example 파일만 커밋)
|
||||||
!frontend/.env.development
|
!frontend/.env.development.example
|
||||||
!frontend/.env.production
|
!frontend/.env.production.example
|
||||||
secrets/
|
secrets/
|
||||||
|
|
||||||
# === Debug ===
|
# === Debug ===
|
||||||
|
|||||||
불러오는 중...
Reference in New Issue
Block a user