기본 원칙
생성 파일은 읽기 전용
*.generated.* 파일 절대 수정 금지자동 재생성으로 변경 손실확장으로 커스터마이징
별도 파일에서 래핑 또는 확장안전하고 유지보수 쉬움
소스에서 제어
Entity, Model, Types에서 조정재생성 시에도 유지됨
Template 활용
커스텀 템플릿으로 생성 제어프로젝트 요구사항 반영
수정 가능 vs 불가능 파일
❌ 수정 불가 파일
이 파일들은 절대 수정하지 마세요. 재생성 시 덮어씌워집니다.| 파일 패턴 | 재생성 조건 | 예시 |
|---|---|---|
*.generated.ts | Entity/Model 변경 | sonamu.generated.ts |
*.generated.sso.ts | Entity 변경 | sonamu.generated.sso.ts |
*.generated.tsx | Model 변경 | entry-server.generated.tsx |
*.generated.http | Model 변경 | sonamu.generated.http |
services.generated.ts | Model 변경 | services.generated.ts |
queries.generated.ts | Model 변경 | queries.generated.ts |
sd.generated.ts | Entity/i18n 변경 | sd.generated.ts |
✅ 수정 가능 파일
이 파일들은 한 번 생성 후 수정 가능합니다.| 파일 패턴 | 재생성 여부 | 예시 |
|---|---|---|
{entity}.types.ts | 첫 생성 후 안됨 | user.types.ts |
{entity}.model.ts | Scaffold 후 안됨 | user.model.ts |
{Entity}List.tsx | Scaffold 후 안됨 | UserList.tsx |
{Entity}Form.tsx | Scaffold 후 안됨 | UserForm.tsx |
| 커스텀 파일 | 재생성 안됨 | user.custom.ts |
API 클라이언트 커스터마이징
services.generated.ts를 직접 수정하지 말고 래핑합니다.
❌ 잘못된 방법
services.generated.ts
✅ 올바른 방법 1: 래퍼 함수
- 생성 파일 건드리지 않음
- 원본 함수 재사용
- 타입 안전성 유지
✅ 올바른 방법 2: Axios Interceptor
services/axios-config.ts (신규 생성)
- 모든 API에 자동 적용
- 중복 코드 제거
- 중앙화된 설정
✅ 올바른 방법 3: TanStack Query 커스터마이징
hooks/useUserQuery.ts (신규 생성)
- 공통 옵션 중앙 관리
- 컴포넌트별 커스터마이징 가능
- TanStack Query 기능 활용
Types 커스터마이징
{entity}.types.ts는 재생성되지 않으므로 자유롭게 수정 가능합니다.
커스텀 타입 추가
api/src/application/user/user.types.ts
{entity}.types.ts는 타겟에 복사되므로 변경 시 자동 동기화됩니다.
Validation 강화
user.types.ts
Model 커스터마이징
Model 파일은 Scaffold 후 자유롭게 수정 가능합니다.메서드 추가
api/src/application/user/user.model.ts
services.generated.ts에login(),me()함수 추가sonamu.generated.http에 테스트 케이스 추가
Helper 메서드 분리
api/src/application/user/user.helpers.ts (신규 생성)
user.model.ts에서 사용
React 컴포넌트 커스터마이징
Scaffold로 생성한 컴포넌트는 자유롭게 수정 가능합니다.Form 컴포넌트 커스터마이징
web/src/pages/user/UserForm.tsx
List 컴포넌트 커스터마이징
web/src/pages/user/UserList.tsx
Enum 커스터마이징
Enum을 추가하거나 수정하려면 Entity에서 조정합니다.Entity에서 Enum 수정
Enum 확장 (별도 파일)
user.types.ts
