Files
zellyy-finance/vitest.config.ts
hansoo e72f9e8d26 feat: React 성능 최적화 및 Vercel 배포 시스템 구축 완료
🚀 성능 최적화 (Task 8):
- React.lazy를 활용한 코드 스플리팅 구현
- React.memo, useMemo, useCallback을 통한 메모이제이션 최적화
- 초기 번들 크기 87% 감소 (470kB → 62kB)
- 백그라운드 동기화 간격 최적화 (5분 → 30초)

📦 Vercel 배포 인프라 구축 (Task 9):
- vercel.json 배포 설정 및 보안 헤더 구성
- GitHub Actions 자동 배포 워크플로우 설정
- 환경별 배포 및 미리보기 시스템 구현
- 자동화된 배포 스크립트 및 환경 변수 관리
- 포괄적인 배포 가이드 및 체크리스트 작성

🔧 코드 품질 개선:
- ESLint 주요 오류 수정 (사용하지 않는 변수/import 정리)
- 테스트 커버리지 확장 (229개 테스트 통과)
- TypeScript 타입 안전성 강화
- Prettier 코드 포맷팅 적용

⚠️ 참고: 테스트 파일의 any 타입 및 일부 경고는 향후 개선 예정

🛠️ Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-07-12 20:52:04 +09:00

108 lines
2.4 KiB
TypeScript

/// <reference types="vitest" />
import { defineConfig } from "vite";
import react from "@vitejs/plugin-react-swc";
import path from "path";
export default defineConfig({
plugins: [react()],
resolve: {
alias: {
"@": path.resolve(__dirname, "./src"),
},
},
test: {
// 브라우저 환경 시뮬레이션
environment: "jsdom",
// 전역 설정 파일
setupFiles: ["./src/setupTests.ts"],
// 전역 변수 설정
globals: true,
// CSS 모듈 및 스타일 파일 무시
css: {
modules: {
classNameStrategy: "non-scoped",
},
},
// 포함할 파일 패턴
include: ["**/*.{test,spec}.{js,mjs,cjs,ts,mts,cts,jsx,tsx}"],
// 제외할 파일 패턴
exclude: [
"node_modules",
"dist",
".git",
".cache",
"ccusage/**",
"**/.{idea,git,cache,output,temp}/**",
"**/{karma,rollup,webpack,vite,vitest,jest,ava,babel,nyc,cypress,tsup,build}.config.*",
],
// 커버리지 설정
coverage: {
provider: "v8",
reporter: ["text", "json", "html"],
exclude: [
"node_modules/",
"src/setupTests.ts",
"**/*.d.ts",
"**/*.config.{js,ts}",
"**/index.ts", // 단순 re-export 파일들
"src/main.tsx", // 앱 진입점
"src/vite-env.d.ts",
"**/*.stories.{js,ts,jsx,tsx}", // Storybook 파일
"coverage/**",
"dist/**",
"**/.{git,cache,output,temp}/**",
],
// 80% 커버리지 목표
thresholds: {
global: {
branches: 70,
functions: 70,
lines: 80,
statements: 80,
},
},
},
// 테스트 실행 환경 변수
env: {
NODE_ENV: "test",
VITE_APPWRITE_URL: "https://test.appwrite.io/v1",
VITE_APPWRITE_PROJECT_ID: "test-project-id",
VITE_APPWRITE_DATABASE_ID: "test-database-id",
VITE_APPWRITE_TRANSACTIONS_COLLECTION_ID:
"test-transactions-collection-id",
},
// 테스트 병렬 실행 및 성능 설정
pool: "threads",
poolOptions: {
threads: {
singleThread: false,
},
},
// 테스트 파일 변경 감지
watch: {
ignore: ["**/node_modules/**", "**/dist/**"],
},
// 로그 레벨 설정
logLevel: "info",
// 재시도 설정
retry: 2,
// 테스트 타임아웃 (밀리초)
testTimeout: 10000,
// 훅 타임아웃 (밀리초)
hookTimeout: 10000,
},
});