์ข…์ข… ์ž‘์—… ๊ด€๋ฆฌ์ž ๋˜๋Š” ๋นŒ๋“œ ๋„๊ตฌ๋ผ๊ณ ๋„ ๋ถˆ๋ฆฌ๋Š” ํ”„๋ŸฐํŠธ์—”๋“œ ์ž‘์—… ์‹คํ–‰๊ธฐ๋Š” ์ตœ์‹  ํ”„๋ŸฐํŠธ์—”๋“œ ๊ฐœ๋ฐœ ํ”„๋กœ์„ธ์Šค์˜ ํ•„์ˆ˜์ ์ธ ๋ถ€๋ถ„์œผ๋กœ ์‚ฌ์šฉ๋˜์–ด ์†Œ์Šค ์ฝ”๋“œ๋ฅผ ์ตœ์ ํ™”๋œ ํ”„๋กœ๋•์…˜ ์ค€๋น„ ์ฝ”๋“œ๋กœ ๋ณ€ํ™˜ํ•˜๋Š” ๋ฐ ํ•„์š”ํ•œ ์ˆ˜๋งŽ์€ ์ž‘์—…์„ ๊ฐ„์†Œํ™”ํ•˜๊ณ  ์ž๋™ํ™”ํ•ฉ๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ์ž‘์—… ์‹คํ–‰๊ธฐ๋Š” ํŠนํžˆ ์—ญ๋™์ ์ด๊ณ  ๋Š์ž„์—†์ด ์ง„ํ™”ํ•˜๋Š” ํ”„๋ŸฐํŠธ์—”๋“œ ํ™˜๊ฒฝ์—์„œ ๊ฐœ๋ฐœ์ž ์ƒ์‚ฐ์„ฑ์„ ํ–ฅ์ƒํ•˜๊ณ  ๊ณ ํ’ˆ์งˆ ์ฝ”๋“œ๋ฅผ ์œ ์ง€ํ•˜๋ฉฐ ํšจ์œจ์ ์ธ ํ”„๋กœ์ ํŠธ ์ œ๊ณต์„ ๋ณด์žฅํ•˜๋Š” ๋ฐ ์ค‘์š”ํ•œ ์—ญํ• ์„ ํ•ฉ๋‹ˆ๋‹ค.

์ผ๋ฐ˜์ ์œผ๋กœ ํ”„๋ŸฐํŠธ์—”๋“œ ๊ฐœ๋ฐœ์ž๋Š” ์ฝ”๋“œ ์ปดํŒŒ์ผ, ํŒŒ์ผ ์—ฐ๊ฒฐ, ์ด๋ฏธ์ง€ ์ตœ์ ํ™”, ํ…Œ์ŠคํŠธ ์‹คํ–‰, ๋ธŒ๋ผ์šฐ์ € ์ƒˆ๋กœ ๊ณ ์นจ, ์ฝ”๋“œ ๋ฐฐํฌ ๋“ฑ ๋‹ค์–‘ํ•œ ๋ฐ˜๋ณต ์ž‘์—…์— ์ฐธ์—ฌํ•ฉ๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ์ž‘์—…์„ ์ˆ˜๋™์œผ๋กœ ์กฐ์ •ํ•˜๋Š” ๊ฒƒ์€ ๋ฒˆ๊ฑฐ๋กญ๊ณ  ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•˜๊ธฐ ์‰ฝ์Šต๋‹ˆ๋‹ค. ํ”„๋ŸฐํŠธ์—”๋“œ ์ž‘์—… ์‹คํ–‰๊ธฐ๋Š” ์ด๋Ÿฌํ•œ ํ”„๋กœ์„ธ์Šค๋ฅผ ์ž๋™ํ™”ํ•˜๋„๋ก ์„ค๊ณ„๋˜์–ด ๊ฐœ๋ฐœ์ž๊ฐ€ ์ฝ”๋“œ ์ž‘์„ฑ๊ณผ ์‚ฌ์šฉ์ž ๊ฒฝํ—˜ ๋””์ž์ธ์— ์ง‘์ค‘ํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•ด์ค๋‹ˆ๋‹ค. ์ž‘์—… ์‹คํ–‰๊ธฐ๋ฅผ ์ž‘์—… ํ™˜๊ฒฝ์— ํ†ตํ•ฉํ•จ์œผ๋กœ์จ ๊ฐœ๋ฐœ์ž๋Š” ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ์œ ์ง€ ๊ด€๋ฆฌ์„ฑ, ํšจ์œจ์„ฑ ๋ฐ ํ’ˆ์งˆ์„ ํฌ๊ฒŒ ํ–ฅ์ƒ์‹œํ‚ฌ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ˆ˜๋…„์— ๊ฑธ์ณ Grunt, Gulp ๋ฐ npm ์Šคํฌ๋ฆฝํŠธ๋ฅผ ํฌํ•จํ•œ ์—ฌ๋Ÿฌ ํ”„๋ŸฐํŠธ์—”๋“œ ์ž‘์—… ์‹คํ–‰๊ธฐ๊ฐ€ ์ธ๊ธฐ๋ฅผ ์–ป์—ˆ์Šต๋‹ˆ๋‹ค. 2012๋…„์— ์†Œ๊ฐœ๋œ Grunt๋Š” ํ”„๋ŸฐํŠธ์—”๋“œ ๊ฐœ๋ฐœ์„ ์œ„ํ•ด ์ตœ์ดˆ๋กœ ๋„๋ฆฌ ์ฑ„ํƒ๋œ ์ž‘์—… ์‹คํ–‰๊ธฐ์˜€์Šต๋‹ˆ๋‹ค. ๋‹ค์šฉ๋„ ํ”Œ๋Ÿฌ๊ทธ์ธ ์—์ฝ”์‹œ์Šคํ…œ์„ ๊ฐ–์ถ˜ Grunt๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๊ฐœ๋ฐœ์ž๋Š” ์„ ์–ธ์  ๊ตฌ์„ฑ ํŒŒ์ผ์„ ์‚ฌ์šฉํ•˜์—ฌ ์ž‘์—…์„ ์ •์˜ํ•˜๊ณ  ๊ฐ ์ž‘์—…์˜ ์›ํ•˜๋Š” ๊ฒฐ๊ณผ๋ฅผ ์„ค๋ช…ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. 2021๋…„ ํ˜„์žฌ Grunt์— ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ํ”Œ๋Ÿฌ๊ทธ์ธ์ด 6,000๊ฐœ๊ฐ€ ๋„˜์œผ๋ฉฐ ๋‹ค์–‘ํ•œ ์ž‘์—…์„ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค.

2013๋…„์— ์ถœ์‹œ๋œ Gulp๋Š” Grunt์˜ ์‹คํ–‰ ๊ฐ€๋Šฅํ•œ ๋Œ€์•ˆ์œผ๋กœ ๋น ๋ฅด๊ฒŒ ์ฃผ๋ชฉ์„ ๋ฐ›์•˜์Šต๋‹ˆ๋‹ค. Gulp๋Š” ๋‹จ์ˆœ์„ฑ, ์„ฑ๋Šฅ ๋ฐ ์œ ์—ฐ์„ฑ์œผ๋กœ ์ธํ•ด ๊ฐœ๋ฐœ์ž์—๊ฒŒ ๋งค๋ ฅ์ ์ž…๋‹ˆ๋‹ค. Grunt์™€ ๋‹ฌ๋ฆฌ Gulp๋Š” ํŒŒ์ผ ์ž‘์—…์„ ๋ณด๋‹ค ํšจ์œจ์ ์œผ๋กœ ์ฒ˜๋ฆฌํ•˜๊ธฐ ์œ„ํ•ด Node.js ์ŠคํŠธ๋ฆผ์„ ํ™œ์šฉํ•˜๋Š” ์ฝ”๋“œ ๊ธฐ๋ฐ˜ ์ ‘๊ทผ ๋ฐฉ์‹์„ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•ฉ๋‹ˆ๋‹ค. ์ด ์ ‘๊ทผ ๋ฐฉ์‹์€ ์ค‘๊ฐ„ ๋‹จ๊ณ„์˜ ํ•„์š”์„ฑ์„ ์ตœ์†Œํ™”ํ•˜์—ฌ ๋นŒ๋“œ ์‹œ๊ฐ„์„ ๋‹จ์ถ•ํ•˜๊ณ  ๊ตฌ์„ฑ ํ”„๋กœ์„ธ์Šค๋ฅผ ๋ณด๋‹ค ์ง๊ด€์ ์œผ๋กœ ๋งŒ๋“ญ๋‹ˆ๋‹ค. Gulp์˜ ํ”Œ๋Ÿฌ๊ทธ์ธ ์ƒํƒœ๊ณ„๋Š” ๋˜ํ•œ 4,000๊ฐœ ์ด์ƒ์˜ ํ”Œ๋Ÿฌ๊ทธ์ธ์„ ์ž๋ž‘ํ•˜๋ฉฐ ํ”„๋ŸฐํŠธ์—”๋“œ ๊ฐœ๋ฐœ ์ž‘์—…์„ ์œ„ํ•œ ํฌ๊ด„์ ์ธ ์†”๋ฃจ์…˜์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

๋˜๋Š” ๊ฐœ๋ฐœ์ž๋Š” ์ž‘์—… ์ž๋™ํ™”๋ฅผ ์œ„ํ•ด ์„ธ๊ณ„์—์„œ ๊ฐ€์žฅ ํฐ ์˜คํ”ˆ ์†Œ์Šค ์†Œํ”„ํŠธ์›จ์–ด ํŒจํ‚ค์ง€ ์ €์žฅ์†Œ์ธ npm ์—์ฝ”์‹œ์Šคํ…œ์˜ ๊ธฐ๋Šฅ์„ ํ™œ์šฉํ•˜๋Š” npm ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์‚ฌ์šฉํ•˜๋„๋ก ์„ ํƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. Npm ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๊ฐœ๋ฐœ์ž๋Š” ํ”„๋กœ์ ํŠธ์˜ package.json ํŒŒ์ผ ๋‚ด์—์„œ ์ง์ ‘ ์ž‘์—…์„ ์ •์˜ํ•˜๊ณ  ํ‘œ์ค€ํ™”๋œ ํ”Œ๋žซํผ ๋…๋ฆฝ์  ๋ฐฉ์‹์œผ๋กœ ์…ธ ๋ช…๋ น์ด๋‚˜ Node.js ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ์ ‘๊ทผ ๋ฐฉ์‹์„ ์‚ฌ์šฉํ•˜๋ฉด ๋ณ„๋„์˜ ์ž‘์—… ์‹คํ–‰๊ธฐ ์ข…์†์„ฑ์ด ํ•„์š”ํ•˜์ง€ ์•Š์œผ๋ฉฐ ๊ธฐ์กด npm ๊ธฐ๋ฐ˜ ์›Œํฌํ”Œ๋กœ ๋ฐ ๋„๊ตฌ์™€์˜ ์›ํ™œํ•œ ํ†ตํ•ฉ์ด ์šฉ์ดํ•ฉ๋‹ˆ๋‹ค.

ํŠน์ • ํ”„๋ŸฐํŠธ์—”๋“œ ์ž‘์—… ์‹คํ–‰๊ธฐ์— ๊ด€๊ณ„์—†์ด ๊ฐœ๋ฐœ์ž๋Š” ๋‹ค์Œ์„ ํฌํ•จํ•œ ๋‹ค์–‘ํ•œ ๊ธฐ๋Šฅ๊ณผ ํ†ตํ•ฉ์˜ ์ด์ ์„ ๋ˆ„๋ฆด ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  • JavaScript, CSS, HTML ํŒŒ์ผ ์ตœ์ ํ™”๋ฅผ ์œ„ํ•œ ์ฝ”๋“œ ์ถ•์†Œ ๋ฐ ์—ฐ๊ฒฐ
  • Sass ๋˜๋Š” LESS์™€ ๊ฐ™์€ CSS ์ „์ฒ˜๋ฆฌ๊ธฐ ์ปดํŒŒ์ผ
  • Babel ๋ฐ TypeScript ์ง€์›์„ ํฌํ•จํ•œ JavaScript ๋ณ€ํ™˜
  • ์ž๋™ํ™”๋œ ๋‹จ์œ„ ํ…Œ์ŠคํŠธ ๋ฐ ์ง€์†์ ์ธ ํ†ตํ•ฉ
  • ์ด๋ฏธ์ง€ ์••์ถ• ๋ฐ ์ตœ์ ํ™”
  • ๋ธŒ๋ผ์šฐ์ € ๋™๊ธฐํ™” ๋ฐ ๋ผ์ด๋ธŒ ๋‹ค์‹œ ๋กœ๋“œ
  • ๋ณต์žกํ•œ ์ž‘์—… ์ˆœ์„œ๋ฅผ ํ—ˆ์šฉํ•˜๋Š” ์ž‘์—… ์ข…์†์„ฑ ๋ฐ ํ›„ํฌ
  • ์ฆ๋ถ„ ๋นŒ๋“œ ๋ฐ ์ž๋™ ์ž‘์—… ์‹คํ–‰์„ ์œ„ํ•œ ํŒŒ์ผ ๊ฐ์‹œ

AppMasterno-code ํ”Œ๋žซํผ์—์„œ ์ž‘์—… ์‹คํ–‰๊ธฐ ํ™˜๊ฒฝ์€ ๋ฐฑ์—”๋“œ, ์›น ๋ฐ ๋ชจ๋ฐ”์ผ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ์›ํ™œํ•œ ์ƒ์„ฑ์— ๊ธฐ์—ฌํ•ฉ๋‹ˆ๋‹ค. AppMaster ๋ฐฑ๊ทธ๋ผ์šด๋“œ์—์„œ ํ”„๋ŸฐํŠธ์—”๋“œ ์ž‘์—… ์‹คํ–‰๊ธฐ์˜ ๊ธฐ๋Šฅ์„ ํ™œ์šฉํ•˜์—ฌ ๊ณ ๊ฐ์ด drag-and-drop ์ธํ„ฐํŽ˜์ด์Šค์™€ ์‹œ๊ฐ์  ๋””์ž์ด๋„ˆ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์‹œ๊ฐ์ ์œผ๋กœ ๋›ฐ์–ด๋‚œ ๋Œ€ํ™”ํ˜• ๋ฐ์ดํ„ฐ ๊ธฐ๋ฐ˜ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๊ตฌ์ถ•ํ•˜๋Š” ๋ฐ ์ง‘์ค‘ํ•  ์ˆ˜ ์žˆ๋„๋ก ์ง€์›ํ•ฉ๋‹ˆ๋‹ค. ๊ณ ๊ฐ์ด '๊ฒŒ์‹œ' ๋ฒ„ํŠผ์„ ๋ˆ„๋ฅด๋ฉด AppMaster ํ”Œ๋žซํผ์€ ์†Œ์Šค ์ฝ”๋“œ๋ฅผ ์ƒ์„ฑํ•˜๊ณ , ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์ปดํŒŒ์ผํ•˜๊ณ , ํ…Œ์ŠคํŠธ๋ฅผ ์‹คํ–‰ํ•˜๊ณ , ์ปจํ…Œ์ด๋„ˆ๋ฅผ ํฌ์žฅํ•˜๊ณ , ํด๋ผ์šฐ๋“œ์— ๋ฐฐํฌํ•ฉ๋‹ˆ๋‹ค.

AppMaster ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์šฉ Vue3 ํ”„๋ ˆ์ž„์›Œํฌ์™€ ๋ชจ๋ฐ”์ผ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์šฉ Kotlin, Jetpack Compose ๋ฐ SwiftUI ์™€ ๊ฐ™์€ ์„ ๋„์ ์ธ ์›น ๋ฐ ๋ชจ๋ฐ”์ผ ๊ธฐ์ˆ ์„ ์‚ฌ์šฉํ•˜์—ฌ ํ˜„๋Œ€์ ์ด๊ณ  ์„ฑ๋Šฅ์ด ๋›ฐ์–ด๋‚˜๋ฉฐ ์œ ์ง€ ๊ด€๋ฆฌ๊ฐ€ ๊ฐ€๋Šฅํ•œ ์†Œํ”„ํŠธ์›จ์–ด ์†”๋ฃจ์…˜์„ ๋ณด์žฅํ•ฉ๋‹ˆ๋‹ค. ๊ณ ๊ฐ์€ ํ”Œ๋žซํผ์˜ ์†๋„, ํšจ์œจ์„ฑ ๋ฐ ์œ ์—ฐ์„ฑ์„ ํ†ตํ•ด ๊ธฐ์ˆ  ๋ถ€์ฑ„๋ฅผ ์—†์• ๊ณ  ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ฐœ๋ฐœ ๋น„์šฉ์„ ์ ˆ๊ฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์š”์•ฝํ•˜๋ฉด ํ”„๋ŸฐํŠธ์—”๋“œ ์ž‘์—… ์‹คํ–‰๊ธฐ๋Š” ๊ฐœ๋ฐœ์ž ์ƒ์‚ฐ์„ฑ, ์ฝ”๋“œ ํ’ˆ์งˆ ๋ฐ ํ”„๋กœ์ ํŠธ ์ „๋‹ฌ์„ ํ–ฅ์ƒ์‹œํ‚ค๋Š” ์ž๋™ํ™”, ์ตœ์ ํ™” ๋ฐ ํ†ตํ•ฉ ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•˜๋Š” ํ”„๋ŸฐํŠธ์—”๋“œ ๊ฐœ๋ฐœ์— ์—†์–ด์„œ๋Š” ์•ˆ ๋  ๋„๊ตฌ์ž…๋‹ˆ๋‹ค. ์ž‘์—… ์‹คํ–‰๊ธฐ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋…ธ๋ จํ•œ ํ”„๋ŸฐํŠธ์—”๋“œ ๊ฐœ๋ฐœ์ž์™€ ์ดˆ๋ณด ํ”„๋ŸฐํŠธ์—”๋“œ ๊ฐœ๋ฐœ์ž ๋ชจ๋‘ Grunt, Gulp ๋˜๋Š” npm ์Šคํฌ๋ฆฝํŠธ์™€ ๊ฐ™์€ ๊ธฐ์กด ๋„๊ตฌ๋ฅผ ์‚ฌ์šฉํ•˜๋“ , ๊ฐ•๋ ฅํ•œ no-code ์‚ฌ์šฉํ•˜๋“  ์ƒ๊ด€์—†์ด ์„ฑ๋Šฅ์ด ๋›ฐ์–ด๋‚˜๊ณ  ์‹œ๊ฐ์ ์œผ๋กœ ๋งค๋ ฅ์ ์ด๋ฉฐ ์‚ฌ์šฉ์ž ์ค‘์‹ฌ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๊ตฌ์ถ•ํ•˜๋Š” ๋ฐ ์ง‘์ค‘ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. AppMaster ์™€ ๊ฐ™์€ ํ”Œ๋žซํผ.