Skip to main content
Scaffolding ํƒญ์—์„œ๋Š” Entity๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ Model๊ณผ ํ…Œ์ŠคํŠธ ์ฝ”๋“œ๋ฅผ ์ž๋™ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. CLI์˜ pnpm scaffold ๋ช…๋ น์–ด๋ฅผ ์‹œ๊ฐ์  ์ธํ„ฐํŽ˜์ด์Šค๋กœ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

Scaffolding ํƒญ ๊ตฌ์กฐ

Scaffolding ์„ ํƒ
Scaffolding ์˜ต์…˜
Scaffolding ์ƒ์„ฑ ๊ฒฐ๊ณผ
Scaffolding ์™„๋ฃŒ
Scaffolding ํƒญ์€ ๋‘ ๊ฐ€์ง€ ์ฃผ์š” ์˜์—ญ์œผ๋กœ ๊ตฌ์„ฑ๋ฉ๋‹ˆ๋‹ค:
  • ์™ผ์ชฝ Sidebar: Entity ๋ชฉ๋ก๊ณผ ์„ ํƒ ์ฒดํฌ๋ฐ•์Šค
  • ์˜ค๋ฅธ์ชฝ Content: ์ฝ”๋“œ ์ƒ์„ฑ ์˜ต์…˜ (Model Class, Model Test, View)

์ƒ์„ฑ ๊ฐ€๋Šฅํ•œ ์ฝ”๋“œ

View ์ปดํฌ๋„ŒํŠธ ์ƒ์„ฑ ๊ธฐ๋Šฅ์€ ํ˜„์žฌ ๊ฐœ๋ฐœ ์ค‘์ž…๋‹ˆ๋‹ค. Sonamu UI์˜ ๋‹ค๋ฅธ ๊ธฐ๋Šฅ์„ ํ†ตํ•ด React ์ปดํฌ๋„ŒํŠธ๋ฅผ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Model ํด๋ž˜์Šค ์ƒ์„ฑ

1. Entity ์„ ํƒ

์™ผ์ชฝ Entity ๋ชฉ๋ก์—์„œ Model์„ ์ƒ์„ฑํ•  Entity๋ฅผ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค. ๋‹จ์ผ ์„ ํƒ:
๋‹ค์ค‘ ์„ ํƒ:

2. ์ƒ์„ฑ ์˜ต์…˜ ์„ ํƒ

โ˜‘ Model Class ์ฒดํฌ๋ฐ•์Šค๋ฅผ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค.

3. Generate ์‹คํ–‰

[Generate] ๋ฒ„ํŠผ์„ ํด๋ฆญํ•˜๋ฉด ๋‹ค์Œ ํŒŒ์ผ์ด ์ƒ์„ฑ๋ฉ๋‹ˆ๋‹ค:

์ƒ์„ฑ๋œ ์ฝ”๋“œ

src/application/user/user.model.ts
์ž๋™ ์ƒ์„ฑ๋˜๋Š” ๊ธฐ๋Šฅ:
  • โœ… TypeScript ํƒ€์ž… ์ •์˜
  • โœ… Entity ์—ฐ๊ฒฐ
  • โœ… BaseModel ์ƒ์†
  • โœ… ๊ธฐ๋ณธ CRUD ๋ฉ”์„œ๋“œ

Model ํ…Œ์ŠคํŠธ ์ƒ์„ฑ

1. Entity ์„ ํƒ

Model๊ณผ ๋™์ผํ•˜๊ฒŒ Entity๋ฅผ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค.

2. ์ƒ์„ฑ ์˜ต์…˜ ์„ ํƒ

โ˜‘ Model Test ์ฒดํฌ๋ฐ•์Šค๋ฅผ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค.
Model๊ณผ Test ๋™์‹œ ์ƒ์„ฑ: Model Class์™€ Model Test๋ฅผ ๋™์‹œ์— ์„ ํƒํ•˜์—ฌ ํ•œ ๋ฒˆ์— ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

3. Generate ์‹คํ–‰

[Generate] ๋ฒ„ํŠผ์„ ํด๋ฆญํ•˜๋ฉด ๋‹ค์Œ ํŒŒ์ผ์ด ์ƒ์„ฑ๋ฉ๋‹ˆ๋‹ค:

์ƒ์„ฑ๋œ ์ฝ”๋“œ

src/application/user/user.model.test.ts
์ƒ์„ฑ๋œ ํ…Œ์ŠคํŠธ๋Š” describe.skip์œผ๋กœ ์‹œ์ž‘ํ•ฉ๋‹ˆ๋‹ค. ์‹ค์ œ ํ…Œ์ŠคํŠธ๋ฅผ ์ž‘์„ฑํ•œ ๋’ค .skip์„ ์ œ๊ฑฐํ•ด์•ผ ์‹คํ–‰๋ฉ๋‹ˆ๋‹ค.
์ž๋™ ์ƒ์„ฑ๋˜๋Š” ๊ฒƒ:
  • โœ… bootstrap(vi) ํ˜ธ์ถœ (Sonamu ์ดˆ๊ธฐํ™” + ํ…Œ์ŠคํŠธ๋ณ„ ํŠธ๋žœ์žญ์…˜ ๋ž˜ํ•‘)
  • โœ… ๋น„์–ด ์žˆ๋Š” describe.skip ๋ธ”๋ก (ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค๋Š” ์ง์ ‘ ์ž‘์„ฑ)

์ผ๊ด„ ์ƒ์„ฑ

๋ชจ๋“  Entity์— ๋Œ€ํ•ด ์ƒ์„ฑ

  1. [Select All] ๋ฒ„ํŠผ ํด๋ฆญ
  2. ์ƒ์„ฑ ์˜ต์…˜ ์„ ํƒ
  3. [Generate] ํด๋ฆญ
๊ฒฐ๊ณผ:

ํŠน์ • Entity๋งŒ ์„ ํƒ

ํ”„๋กœ์ ํŠธ ์ดˆ๊ธฐ ์„ค์ • ์‹œ ๋ชจ๋“  Entity์— ๋Œ€ํ•ด:
์ƒˆ Entity ์ถ”๊ฐ€ ์‹œ ํ•ด๋‹น Entity๋งŒ:

์ƒ์„ฑ ๊ฒฐ๊ณผ ํ™•์ธ

์„ฑ๊ณต ๋ฉ”์‹œ์ง€

ํŒŒ์ผ ์ถฉ๋Œ

์ด๋ฏธ ์กด์žฌํ•˜๋Š” ํŒŒ์ผ์„ ์ƒ์„ฑํ•˜๋ ค๊ณ  ํ•˜๋ฉด ํ™•์ธ ๋ชจ๋‹ฌ์ด ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค:
์„ ํƒ ์˜ต์…˜:
  • Cancel: ์ƒ์„ฑ ์ทจ์†Œ
  • Backup & Overwrite: ๊ธฐ์กด ํŒŒ์ผ์„ .bak๋กœ ๋ฐฑ์—… ํ›„ ๋ฎ์–ด์“ฐ๊ธฐ
  • Overwrite: ๋ฐ”๋กœ ๋ฎ์–ด์“ฐ๊ธฐ (์ฃผ์˜!)
์ฝ”๋“œ ์†์‹ค ์ฃผ์˜: ๊ธฐ์กด ํŒŒ์ผ์„ ๋ฎ์–ด์“ฐ๋ฉด ์ž‘์„ฑํ•œ ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง์ด ์‚ญ์ œ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ปค์Šคํ„ฐ๋งˆ์ด์ง•ํ•œ Model์€ ๋ฐฑ์—…ํ•˜๊ฑฐ๋‚˜ ๋ฎ์–ด์“ฐ๊ธฐ๋ฅผ ํ”ผํ•˜์„ธ์š”.

View ์ƒ์„ฑ

Scaffolding ํƒญ์˜ TemplateKey ๋ชฉ๋ก์—๋Š” Model ์™ธ์— View ํ…œํ”Œ๋ฆฟ๋„ ํฌํ•จ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.
๋™์ผํ•œ ํ…œํ”Œ๋ฆฟ์„ CLI์—์„œ๋„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค: pnpm scaffold view_list, pnpm scaffold view_form.

์ƒ์„ฑ ํ›„ ์›Œํฌํ”Œ๋กœ์šฐ

1. Model ๋ฉ”์„œ๋“œ ์ถ”๊ฐ€

์ƒ์„ฑ๋œ Model์— ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง์„ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค:
src/application/user/user.model.ts

2. ํ…Œ์ŠคํŠธ ์ถ”๊ฐ€

์ƒ์„ฑ๋œ ํ…Œ์ŠคํŠธ ํŒŒ์ผ์— ์ถ”๊ฐ€ ํ…Œ์ŠคํŠธ๋ฅผ ์ž‘์„ฑํ•ฉ๋‹ˆ๋‹ค:
src/application/user/user.model.test.ts

3. API ์ถ”๊ฐ€

Model์— @api ๋ฐ์ฝ”๋ ˆ์ดํ„ฐ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ API ์—”๋“œํฌ์ธํŠธ๋ฅผ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค:

์‹ค์ „ ํŒ

1. ํ”„๋กœ์ ํŠธ ์ดˆ๊ธฐ ์„ค์ •

2. ์ƒˆ Entity ์ถ”๊ฐ€ ์‹œ

3. ์žฌ์ƒ์„ฑ์ด ํ•„์š”ํ•œ ๊ฒฝ์šฐ

Entity ๊ตฌ์กฐ๊ฐ€ ํฌ๊ฒŒ ๋ณ€๊ฒฝ๋˜์–ด Model์„ ์žฌ์ƒ์„ฑํ•ด์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ:

๋‹ค์Œ ๋‹จ๊ณ„

Model

Model ํด๋ž˜์Šค ์ž์„ธํžˆ ์•Œ์•„๋ณด๊ธฐ

scaffold CLI

CLI๋กœ ์ฝ”๋“œ ์ƒ์„ฑํ•˜๊ธฐ