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>
This commit is contained in:
@@ -1,7 +1,7 @@
|
||||
/// <reference types="vitest" />
|
||||
import { defineConfig } from 'vite'
|
||||
import react from '@vitejs/plugin-react-swc'
|
||||
import path from 'path'
|
||||
import { defineConfig } from "vite";
|
||||
import react from "@vitejs/plugin-react-swc";
|
||||
import path from "path";
|
||||
|
||||
export default defineConfig({
|
||||
plugins: [react()],
|
||||
@@ -12,51 +12,51 @@ export default defineConfig({
|
||||
},
|
||||
test: {
|
||||
// 브라우저 환경 시뮬레이션
|
||||
environment: 'jsdom',
|
||||
|
||||
environment: "jsdom",
|
||||
|
||||
// 전역 설정 파일
|
||||
setupFiles: ['./src/setupTests.ts'],
|
||||
|
||||
setupFiles: ["./src/setupTests.ts"],
|
||||
|
||||
// 전역 변수 설정
|
||||
globals: true,
|
||||
|
||||
|
||||
// CSS 모듈 및 스타일 파일 무시
|
||||
css: {
|
||||
modules: {
|
||||
classNameStrategy: 'non-scoped',
|
||||
classNameStrategy: "non-scoped",
|
||||
},
|
||||
},
|
||||
|
||||
|
||||
// 포함할 파일 패턴
|
||||
include: ['**/*.{test,spec}.{js,mjs,cjs,ts,mts,cts,jsx,tsx}'],
|
||||
|
||||
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.*'
|
||||
"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'],
|
||||
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}/**',
|
||||
"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: {
|
||||
@@ -68,39 +68,40 @@ export default defineConfig({
|
||||
},
|
||||
},
|
||||
},
|
||||
|
||||
|
||||
// 테스트 실행 환경 변수
|
||||
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',
|
||||
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',
|
||||
pool: "threads",
|
||||
poolOptions: {
|
||||
threads: {
|
||||
singleThread: false,
|
||||
},
|
||||
},
|
||||
|
||||
|
||||
// 테스트 파일 변경 감지
|
||||
watch: {
|
||||
ignore: ['**/node_modules/**', '**/dist/**'],
|
||||
ignore: ["**/node_modules/**", "**/dist/**"],
|
||||
},
|
||||
|
||||
|
||||
// 로그 레벨 설정
|
||||
logLevel: 'info',
|
||||
|
||||
logLevel: "info",
|
||||
|
||||
// 재시도 설정
|
||||
retry: 2,
|
||||
|
||||
|
||||
// 테스트 타임아웃 (밀리초)
|
||||
testTimeout: 10000,
|
||||
|
||||
|
||||
// 훅 타임아웃 (밀리초)
|
||||
hookTimeout: 10000,
|
||||
},
|
||||
});
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user