Skip to main content
Sonamu는 파일 변경에 따라 관련 파일을 자동으로 재생성합니다. 이 문서는 각 파일 변경 시 어떤 파일이 재생성되는지 명확하게 설명합니다.

재생성 흐름도

Entity 저장 시

.entity.json 파일을 저장하면 다음 파일들이 재생성됩니다.

재생성되는 파일

1

1. {Entity}.types.ts

Entity별 TypeScript 타입과 Zod 스키마위치: api/src/application/{entity}/{entity}.types.ts생성 조건: Entity가 처음 생성될 때 (이후 자동 재생성 안됨)
user.types.ts
2

2. sonamu.generated.ts

프로젝트 전체의 베이스 타입과 Enum위치: api/src/application/sonamu.generated.ts항상 재생성: ✅
3

3. sonamu.generated.sso.ts

Subset 쿼리 함수들위치: api/src/application/sonamu.generated.sso.ts항상 재생성: ✅
4

4. 타겟 복사

위 파일들이 타겟 프로젝트에 복사됨위치:
  • web/src/services/user/user.types.ts
  • web/src/services/sonamu.generated.ts
  • web/src/services/sonamu.generated.sso.ts
  • app/src/services/... (동일)

트리거 예시

{entity}.types.ts처음 Entity 생성 시에만 자동 생성됩니다. 이후에는 수동으로 관리해야 합니다.이미 존재하는 user.types.ts를 재생성하려면:

Model 저장 시

.model.ts 파일을 저장하면 다음 파일들이 재생성됩니다.

재생성되는 파일

1

1. services.generated.ts

API 클라이언트 함수와 TanStack Query hooks위치:
  • web/src/services/services.generated.ts
  • app/src/services/services.generated.ts
항상 재생성: ✅
생성 기준: Model의 @api 데코레이터가 있는 메서드
2

2. sonamu.generated.http

REST Client용 HTTP 테스트 파일위치: api/sonamu.generated.http항상 재생성: ✅
3

3. queries.generated.ts

SSR용 Query Options위치: web/src/queries.generated.ts항상 재생성: ✅
4

4. entry-server.generated.tsx

SSR Entry Server 코드위치: web/src/entry-server.generated.tsx항상 재생성: ✅

트리거 예시

Types 저장 시

.types.ts 파일을 저장하면 스키마 파일들이 재생성되고, 타겟에 복사됩니다.
.types.ts 파일은 Single Source of Truth로 취급됩니다. 변경 시 Entity 변경과 동일하게 스키마 파일들이 재생성됩니다.

재생성되는 파일

1

1. sonamu.generated.ts

프로젝트 전체의 베이스 타입과 Enum위치: api/src/application/sonamu.generated.ts항상 재생성: ✅Types 파일에서 정의한 Zod 스키마들이 이 파일에 반영됩니다.
2

2. sonamu.generated.sso.ts

Subset 쿼리 함수들위치: api/src/application/sonamu.generated.sso.ts항상 재생성: ✅Types 변경에 따른 타입 정합성을 유지하기 위해 함께 재생성됩니다.
3

3. 타겟 복사

수정된 Types 파일과 재생성된 파일들이 타겟 프로젝트에 복사위치:
  • web/src/services/{entity}/{entity}.types.ts
  • web/src/services/sonamu.generated.ts
  • web/src/services/sonamu.generated.sso.ts
  • app/src/services/... (동일)
항상 복사: ✅import 변환: sonamu./sonamu.shared

트리거 예시

Config 저장 시

sonamu.config.ts 파일을 저장하면 환경 변수가 동기화됩니다.

재생성되는 파일

1

.sonamu.env

API 서버 정보를 담은 환경 변수 파일위치:
  • web/.sonamu.env
  • app/.sonamu.env
항상 재생성: ✅

트리거 예시

i18n 파일 저장 시

src/i18n/**/*.ts 파일을 저장하면 SD 파일이 재생성됩니다.

재생성되는 파일

1

1. Locale 파일 복사

i18n 파일이 타겟에 복사됨위치:
  • web/src/i18n/{locale}.ts
  • app/src/i18n/{locale}.ts
2

2. sd.generated.ts

Sonamu Dictionary 파일 생성위치:
  • api/src/sd.generated.ts
  • web/src/sd.generated.ts
  • app/src/sd.generated.ts
항상 재생성: ✅

재생성 매트릭스

파일 변경과 재생성 관계를 한눈에 보여주는 표입니다. 범례:
  • ✅ = 항상 재생성
  • ✅ (첫 생성) = 첫 생성 시에만
  • 복사 = 타겟에 복사
    • = 재생성 안됨

재생성 방지하기

생성된 파일을 수정하면 다음 재생성 시 덮어씌워집니다.

❌ 잘못된 방법

services.generated.ts 직접 수정

✅ 올바른 방법

services/user/user.custom.ts
장점: 생성 파일 건드리지 않음

재생성 강제하기

파일이 재생성되지 않을 때 강제로 재생성하는 방법입니다.

Checksum 초기화

특정 파일 재생성

강제 Overwrite

재생성 최적화

재생성 시간을 줄이는 팁입니다.
Model API 변경이 아니라면 Entity나 Types 수정만으로 충분
  • Types/Entity 변경 → 스키마 재생성
  • Model 변경 → 서비스 및 HTTP 파일 재생성
사용하지 않는 타겟을 sonamu.config.ts에서 제거
필요한 메서드에만 @api 추가
  • 내부 메서드는 @api 불필요
  • API 수가 적을수록 빠른 재생성
Node.js v22+ 사용 및 SSD 활용

다음 단계

Customizing Generated Code

생성된 코드를 안전하게 커스터마이징하기

Syncer

Syncer 시스템 깊이 이해하기

Templates

커스텀 템플릿 만들기

Testing

생성된 코드 테스트하기