🚀 성능 최적화 (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>
69 lines
1.8 KiB
JSON
69 lines
1.8 KiB
JSON
{
|
|
"buildCommand": "npm run build",
|
|
"outputDirectory": "dist",
|
|
"devCommand": "npm run dev",
|
|
"installCommand": "npm install",
|
|
"framework": "vite",
|
|
"rewrites": [
|
|
{
|
|
"source": "/(.*)",
|
|
"destination": "/index.html"
|
|
}
|
|
],
|
|
"headers": [
|
|
{
|
|
"source": "/(.*).(js|css|woff2?|ttf|eot|svg|ico|png|jpg|jpeg|gif|webp|avif)",
|
|
"headers": [
|
|
{
|
|
"key": "Cache-Control",
|
|
"value": "public, max-age=31536000, immutable"
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"source": "/(.*)",
|
|
"headers": [
|
|
{
|
|
"key": "X-Content-Type-Options",
|
|
"value": "nosniff"
|
|
},
|
|
{
|
|
"key": "X-Frame-Options",
|
|
"value": "DENY"
|
|
},
|
|
{
|
|
"key": "X-XSS-Protection",
|
|
"value": "1; mode=block"
|
|
},
|
|
{
|
|
"key": "Referrer-Policy",
|
|
"value": "strict-origin-when-cross-origin"
|
|
}
|
|
]
|
|
}
|
|
],
|
|
"env": {
|
|
"VITE_APPWRITE_ENDPOINT": "@vite_appwrite_endpoint",
|
|
"VITE_APPWRITE_PROJECT_ID": "@vite_appwrite_project_id",
|
|
"VITE_APPWRITE_DATABASE_ID": "@vite_appwrite_database_id",
|
|
"VITE_APPWRITE_TRANSACTIONS_COLLECTION_ID": "@vite_appwrite_transactions_collection_id",
|
|
"VITE_APPWRITE_API_KEY": "@vite_appwrite_api_key",
|
|
"VITE_DISABLE_LOVABLE_BANNER": "@vite_disable_lovable_banner"
|
|
},
|
|
"build": {
|
|
"env": {
|
|
"VITE_APPWRITE_ENDPOINT": "@vite_appwrite_endpoint",
|
|
"VITE_APPWRITE_PROJECT_ID": "@vite_appwrite_project_id",
|
|
"VITE_APPWRITE_DATABASE_ID": "@vite_appwrite_database_id",
|
|
"VITE_APPWRITE_TRANSACTIONS_COLLECTION_ID": "@vite_appwrite_transactions_collection_id",
|
|
"VITE_APPWRITE_API_KEY": "@vite_appwrite_api_key",
|
|
"VITE_DISABLE_LOVABLE_BANNER": "@vite_disable_lovable_banner"
|
|
}
|
|
},
|
|
"functions": {
|
|
"app/*": {
|
|
"includeFiles": "dist/**"
|
|
}
|
|
}
|
|
}
|