메인 μ½˜ν…μΈ λ‘œ κ±΄λ„ˆλ›°κΈ°
SonamuλŠ” 개발자 κ²½ν—˜μ„ μ΅œμš°μ„ μœΌλ‘œ μ„€κ³„λ˜μ—ˆμŠ΅λ‹ˆλ‹€.

HMR (Hot Module Replacement)

μ½”λ“œλ₯Ό μˆ˜μ •ν•˜λ©΄ μ„œλ²„ μž¬μ‹œμž‘ 없이 μ¦‰μ‹œ λ°˜μ˜λ©λ‹ˆλ‹€. Entity, Model, API μ–΄λ””λ₯Ό μˆ˜μ •ν•˜λ“  2초면 μΆ©λΆ„ν•©λ‹ˆλ‹€.
# 전톡적 방식: Entity μˆ˜μ • β†’ μ„œλ²„ μž¬μ‹œμž‘ β†’ 30초 λŒ€κΈ°
# Sonamu 방식: Entity μˆ˜μ • β†’ μ €μž₯ β†’ 2초 ν›„ 반영 βœ…
# μ½˜μ†” 좜λ ₯ μ˜ˆμ‹œ
πŸ”„ Invalidated:
- src/application/user/user.model.ts (with 8 APIs)

βœ… All files are synced!
ν•˜λ£¨μ— 50번 μˆ˜μ •ν•œλ‹€λ©΄? 전톡적 방식은 25λΆ„ λ‚­λΉ„, SonamuλŠ” 1.7λΆ„μž…λ‹ˆλ‹€.

HMR λ™μž‘ 원리

HMR μ‹œμŠ€ν…œμ˜ λ‚΄λΆ€ λ™μž‘ 방식 μžμ„Ένžˆ μ•Œμ•„λ³΄κΈ°

Sonamu UI

Entity μ •μ˜, Subset 관리, Migration 싀행을 μ›Ή UIμ—μ„œ 직접 ν•  수 μžˆμŠ΅λ‹ˆλ‹€. JSON을 직접 νŽΈμ§‘ν•˜μ§€ μ•Šμ•„λ„ λ©λ‹ˆλ‹€.

Sonamu UI κ°€μ΄λ“œ

Sonamu UI μ‹œμž‘ν•˜κΈ°

λΉ λ₯Έ ν”Όλ“œλ°± 루프

Entity λ³€κ²½ β†’ νƒ€μž…/μŠ€ν‚€λ§ˆ μžλ™ 생성 β†’ API μž¬λ“±λ‘ β†’ ν”„λ‘ νŠΈμ—”λ“œ Service μ—…λ°μ΄νŠΈκΉŒμ§€ λͺ¨λ“  것이 μžλ™μž…λ‹ˆλ‹€.

Syncerκ°€ ν•˜λŠ” 일

  1. 파일 λ³€κ²½ 감지: chokidar둜 νŒŒμΌμ‹œμŠ€ν…œ κ°μ‹œ
  2. ESM μΊμ‹œ λ¬΄νš¨ν™”: λ³€κ²½λœ λͺ¨λ“ˆκ³Ό μ˜μ‘΄μ„± μΊμ‹œ 제거
  3. μ½”λ“œ μžλ™ 생성: νƒ€μž…, μŠ€ν‚€λ§ˆ, Service 파일 생성
  4. λͺ¨λ“ˆ μž¬λ‘œλ“œ: μ΅œμ‹  μ½”λ“œλ‘œ μž¬λ‘œλ“œ
  5. API μž¬λ“±λ‘: λ³€κ²½λœ API μ—”λ“œν¬μΈνŠΈ μž¬λ“±λ‘

Syncer μ΄ν•΄ν•˜κΈ°

μžλ™ 생성 μ‹œμŠ€ν…œμ˜ 핡심

핡심 κΈ°λŠ₯ μš”μ•½

HMR

μ„œλ²„ μž¬μ‹œμž‘ 없이 μ¦‰μ‹œ λ°˜μ˜μˆ˜μ • β†’ μ €μž₯ β†’ 2초 ν›„ ν…ŒμŠ€νŠΈ

Sonamu UI

μ‹œκ°μ  Entity 관리JSON νŽΈμ§‘ λΆˆν•„μš”

Syncer

λͺ¨λ“  μ½”λ“œ μžλ™ λ™κΈ°ν™”νƒ€μž…, μŠ€ν‚€λ§ˆ, Service

νƒ€μž… μ—λŸ¬ 감지

λ³€κ²½ μ¦‰μ‹œ 컴파일 μ—λŸ¬λŸ°νƒ€μž„ μ—λŸ¬ λ°©μ§€

λ‹€μŒ 단계