Skip to main content
Sonamu가 자동 생성한 코드를 직접 수정하면 다음 재생성 시 덮어씌워집니다. 이 문서는 생성된 코드를 안전하게 커스터마이징하는 방법을 설명합니다.

기본 원칙

생성 파일은 읽기 전용

*.generated.* 파일 절대 수정 금지 자동 재생성으로 변경 손실

확장으로 커스터마이징

별도 파일에서 래핑 또는 확장 안전하고 유지보수 쉬움

소스에서 제어

Entity, Model, Types에서 조정 재생성 시에도 유지됨

Template 활용

커스텀 템플릿으로 생성 제어 프로젝트 요구사항 반영

수정 가능 vs 불가능 파일

❌ 수정 불가 파일

이 파일들은 절대 수정하지 마세요. 재생성 시 덮어씌워집니다.

✅ 수정 가능 파일

이 파일들은 한 번 생성 후 수정 가능합니다.

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
추가된 API가 자동 생성됨:
  • services.generated.tslogin(), 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

Subset 커스터마이징

Subset을 수정하려면 Entity에서 조정합니다.

Subset 필드 추가/제거

다음 단계

When Files Regenerate

파일 재생성 시점 이해하기

Syncer

Syncer 시스템 깊이 이해하기

Templates

커스텀 템플릿 만들기

Testing

커스터마이징한 코드 테스트하기