๐Ÿš€2025๋…„ ์ตœ์‹  ๋ฆฌ์•กํŠธ ์„ค์น˜ npm ๋ช…๋ น์–ด ๊ฐ€์ด๋“œ ์ดˆ๋ณด์ž๋ฅผ ์œ„ํ•œ React ํ™˜๊ฒฝ ์„ค์ •๊ณผ Vite ์‚ฌ์šฉ๋ฒ• ์ž์„ธํžˆ ๋ณด๊ธฐ

์•ˆ๋…•ํ•˜์„ธ์š”, ์›น ๊ฐœ๋ฐœ์— ์ฒซ๋ฐœ์„ ๋‚ด๋”›๋Š” ์ดˆ๋ณด ๊ฐœ๋ฐœ์ž๋‹˜๋“ค! ์‚ฌ์šฉ์ž ์ธํ„ฐํŽ˜์ด์Šค(UI) ๊ตฌ์ถ•์„ ์œ„ํ•œ ๊ฐ€์žฅ ์ธ๊ธฐ ์žˆ๋Š” ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์ธ React(๋ฆฌ์•กํŠธ)๋ฅผ ์„ค์น˜ํ•˜๊ณ  ๊ฐœ๋ฐœ ํ™˜๊ฒฝ์„ ์„ค์ •ํ•˜๋Š” ๊ฒƒ์€ ๋ชจ๋“  ์—ฌ์ •์˜ ์‹œ์ž‘์ž…๋‹ˆ๋‹ค. ๊ณผ๊ฑฐ์—๋Š” Create React App(CRA)์„ ์ฃผ๋กœ ์‚ฌ์šฉํ–ˆ์ง€๋งŒ, 2025๋…„ ํ˜„์žฌ๋Š” ๋” ๋น ๋ฅด๊ณ  ํšจ์œจ์ ์ธ ๋„๊ตฌ๋“ค์ด ๋Œ€์„ธ์ž…๋‹ˆ๋‹ค. ์ด ๊ฐ€์ด๋“œ์—์„œ๋Š” Node.js ์„ค์น˜๋ถ€ํ„ฐ ์‹œ์ž‘ํ•˜์—ฌ, npm์„ ํ™œ์šฉํ•œ ์ตœ์‹  ๋ฆฌ์•กํŠธ ํ™˜๊ฒฝ ๊ตฌ์ถ• ๋ฐฉ๋ฒ•, ํŠนํžˆ ์ฃผ๋ชฉ๋ฐ›๊ณ  ์žˆ๋Š” Vite(๋น„ํŠธ) ์‚ฌ์šฉ๋ฒ•๊นŒ์ง€ ์ƒ์„ธํžˆ ์•Œ๋ ค๋“œ๋ฆฝ๋‹ˆ๋‹ค.

๋ฆฌ์•กํŠธ ํ”„๋กœ์ ํŠธ๋ฅผ ์‹œ์ž‘ํ•˜๊ธฐ ์ „์—, ํ•ต์‹ฌ์ ์œผ๋กœ ํ•„์š”ํ•œ ๋‘ ๊ฐ€์ง€ ๋„๊ตฌ, ๋ฐ”๋กœ Node.js์™€ npm(Node Package Manager)์— ๋Œ€ํ•ด ๋จผ์ € ์ดํ•ดํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. npm์€ ์ˆ˜๋งŽ์€ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์™€ ํŒจํ‚ค์ง€๋“ค์„ ๊ด€๋ฆฌํ•˜๊ณ  ์„ค์น˜ํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋˜๋Š” ๋„๊ตฌ๋กœ, ๋ฆฌ์•กํŠธ ์„ค์น˜์˜ ํ•ต์‹ฌ ์—ญํ• ์„ ๋‹ด๋‹นํ•ฉ๋‹ˆ๋‹ค. ์ตœ์‹  ๊ฐœ๋ฐœ ํŠธ๋ Œ๋“œ๋ฅผ ๋ฐ˜์˜ํ•˜์—ฌ ๊ฐ€์žฅ ํšจ์œจ์ ์ธ ๊ฐœ๋ฐœ ํ™˜๊ฒฝ์„ ๊ตฌ์ถ•ํ•ด ๋ด…์‹œ๋‹ค.

โœ… ๋ฆฌ์•กํŠธ ์„ค์น˜๋ฅผ ์œ„ํ•œ ํ•„์ˆ˜ ์ค€๋น„๋ฌผ Node.js์™€ npm ํ™•์ธํ•˜๊ธฐ

๋ฆฌ์•กํŠธ๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ๋จผ์ € Node.js๊ฐ€ ์‹œ์Šคํ…œ์— ์„ค์น˜๋˜์–ด ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. Node.js๋ฅผ ์„ค์น˜ํ•˜๋ฉด ํŒจํ‚ค์ง€ ๊ด€๋ฆฌ ๋„๊ตฌ์ธ npm์ด ์ž๋™์œผ๋กœ ํ•จ๊ป˜ ์„ค์น˜๋ฉ๋‹ˆ๋‹ค. npm์€ ๋ฆฌ์•กํŠธ์™€ ๊ด€๋ จ๋œ ๋ชจ๋“  ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ(์˜ˆ: react, react-dom)๋ฅผ ๋‹ค์šด๋กœ๋“œํ•˜๊ณ  ๊ด€๋ฆฌํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ๋ฆฌ์•กํŠธ ์„ค์น˜์˜ ์ฒซ ๋‹จ๊ณ„๋Š” ๋ฐ”๋กœ Node.js์™€ npm์˜ ๋ฒ„์ „์„ ํ™•์ธํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

ํ„ฐ๋ฏธ๋„(๋˜๋Š” ๋ช…๋ น ํ”„๋กฌํ”„ํŠธ)์„ ์—ด๊ณ  ์•„๋ž˜ ๋ช…๋ น์–ด๋ฅผ ์ž…๋ ฅํ•˜์—ฌ ํ˜„์žฌ ์„ค์น˜๋œ ๋ฒ„์ „์„ ํ™•์ธํ•˜์„ธ์š”. ๋งŒ์•ฝ ์„ค์น˜๋˜์–ด ์žˆ์ง€ ์•Š๋‹ค๋ฉด, Node.js ๊ณต์‹ ํ™ˆํŽ˜์ด์ง€์—์„œ LTS(Long Term Support) ๋ฒ„์ „์„ ๋‹ค์šด๋กœ๋“œํ•˜์—ฌ ์„ค์น˜ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์•ˆ์ •์ ์ธ ๊ฐœ๋ฐœ ํ™˜๊ฒฝ์„ ์œ„ํ•ด LTS ๋ฒ„์ „์„ ์„ค์น˜ํ•˜๋Š” ๊ฒƒ์„ ๊ฐ•๋ ฅํžˆ ๊ถŒ์žฅํ•ฉ๋‹ˆ๋‹ค.

node -v npm -v

๋‘ ๋ช…๋ น์–ด ๋ชจ๋‘ ๋ฒ„์ „ ์ •๋ณด๊ฐ€ ์ •์ƒ์ ์œผ๋กœ ์ถœ๋ ฅ๋œ๋‹ค๋ฉด ๋ฆฌ์•กํŠธ ํ”„๋กœ์ ํŠธ๋ฅผ ์œ„ํ•œ ๊ธฐ๋ณธ ํ™˜๊ฒฝ์€ ์ค€๋น„๋œ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ด์ œ npm์„ ์‚ฌ์šฉํ•˜์—ฌ ๋ฆฌ์•กํŠธ ํ”„๋กœ์ ํŠธ๋ฅผ ์ดˆ๊ธฐํ™”ํ•˜๋Š” ๋‹ค์Œ ๋‹จ๊ณ„๋กœ ๋„˜์–ด๊ฐˆ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๐Ÿš€ 2025๋…„ ๋ฆฌ์•กํŠธ ํ™˜๊ฒฝ ๊ตฌ์ถ•์˜ ํ•ต์‹ฌ Vite ์‚ฌ์šฉ๋ฒ• ์ƒ์„ธ ๋”๋ณด๊ธฐ

2024๋…„์„ ๊ธฐ์ ์œผ๋กœ Create React App(CRA)์˜ ์‚ฌ์šฉ์€ ํฌ๊ฒŒ ์ค„์—ˆ์œผ๋ฉฐ, ํ˜„์žฌ๋Š” Vite์™€ Next.js๊ฐ€ ๋ฆฌ์•กํŠธ ๊ฐœ๋ฐœ ํ™˜๊ฒฝ ๊ตฌ์ถ•์˜ ์ฃผ๋ฅ˜์ž…๋‹ˆ๋‹ค. Vite๋Š” ๊ฐœ๋ฐœ ์„œ๋ฒ„ ๊ตฌ๋™ ์†๋„๊ฐ€ ๋งค์šฐ ๋น ๋ฅด๊ณ  HMR(Hot Module Replacement) ์„ฑ๋Šฅ์ด ์šฐ์ˆ˜ํ•˜์—ฌ ๊ฐœ๋ฐœ ์ƒ์‚ฐ์„ฑ์„ ํฌ๊ฒŒ ๋†’์—ฌ์ค๋‹ˆ๋‹ค. ๋ฆฌ์•กํŠธ ์„ค์น˜ ์‹œ npm์„ ํ™œ์šฉํ•˜์—ฌ Vite ๊ธฐ๋ฐ˜ ํ”„๋กœ์ ํŠธ๋ฅผ ์ƒ์„ฑํ•˜๋Š” ๊ฒƒ์ด ํ˜„์žฌ ๊ฐ€์žฅ ๊ถŒ์žฅ๋˜๋Š” ๋ฐฉ๋ฒ•์ž…๋‹ˆ๋‹ค.

Vite๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ƒˆ๋กœ์šด ๋ฆฌ์•กํŠธ ํ”„๋กœ์ ํŠธ๋ฅผ ์‹œ์ž‘ํ•˜๋Š” npm ๋ช…๋ น์–ด๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค. ํ„ฐ๋ฏธ๋„์—์„œ ์›ํ•˜๋Š” ํด๋”๋กœ ์ด๋™ํ•œ ํ›„ ์•„๋ž˜ ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰ํ•˜์„ธ์š”.

npm create vite@latest

์ด ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰ํ•˜๋ฉด ๋ช‡ ๊ฐ€์ง€ ์งˆ๋ฌธ์„ ๋ฐ›๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. ์ด ์งˆ๋ฌธ๋“ค์— ๋Œ€ํ•œ ๋‹ต๋ณ€์„ ํ†ตํ•ด ํ”„๋กœ์ ํŠธ์˜ ๊ธฐ๋ณธ ์„ค์ •์„ ์™„๋ฃŒํ•ฉ๋‹ˆ๋‹ค.

  • ํ”„๋กœ์ ํŠธ ์ด๋ฆ„ (Project name): ์›ํ•˜๋Š” ํ”„๋กœ์ ํŠธ ํด๋” ์ด๋ฆ„์„ ์ž…๋ ฅํ•ฉ๋‹ˆ๋‹ค. (์˜ˆ: my-react-app)
  • ํ”„๋ ˆ์ž„์›Œํฌ ์„ ํƒ (Select a framework): ํ™”์‚ดํ‘œ ํ‚ค๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ React๋ฅผ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค.
  • ๋ณ€ํ˜• ์„ ํƒ (Select a variant): JavaScript ๋˜๋Š” TypeScript ์ค‘ ์›ํ•˜๋Š” ์–ธ์–ด๋ฅผ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค. ์ดˆ๋ณด์ž๋ผ๋ฉด JavaScript๋ฅผ ์„ ํƒํ•˜๋Š” ๊ฒƒ์ด ์ผ๋ฐ˜์ ์ž…๋‹ˆ๋‹ค.

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

Vite ํ”„๋กœ์ ํŠธ ํ•„์ˆ˜ ๋ช…๋ น์–ด ํ™•์ธํ•˜๊ธฐ

ํ”„๋กœ์ ํŠธ๊ฐ€ ์ƒ์„ฑ๋œ ํ›„์—๋Š” ๋‹ค์Œ์˜ ๊ธฐ๋ณธ์ ์ธ npm ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๊ฐœ๋ฐœ์„ ์ง„ํ–‰ํ•ฉ๋‹ˆ๋‹ค. ์ด ๋ช…๋ น์–ด๋“ค์€ ๋ชจ๋“  ๋ฆฌ์•กํŠธ ๊ฐœ๋ฐœ์˜ ๊ธฐ๋ณธ์ด ๋ฉ๋‹ˆ๋‹ค.

๋ช…๋ น์–ด ์„ค๋ช…
cd my-react-app ์ƒ์„ฑ๋œ ํ”„๋กœ์ ํŠธ ํด๋”๋กœ ์ด๋™ํ•ฉ๋‹ˆ๋‹ค.
npm install package.json์— ์ •์˜๋œ ๋ชจ๋“  ์˜์กด์„ฑ ํŒจํ‚ค์ง€๋ฅผ ์„ค์น˜ํ•ฉ๋‹ˆ๋‹ค. (npm i๋กœ ์ถ•์•ฝ ๊ฐ€๋Šฅ)
npm run dev ๊ฐœ๋ฐœ ์„œ๋ฒ„๋ฅผ ์‹œ์ž‘ํ•˜๊ณ  ๋ธŒ๋ผ์šฐ์ €์—์„œ ํ”„๋กœ์ ํŠธ๋ฅผ ํ™•์ธํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ฉ๋‹ˆ๋‹ค.
npm run build ๋ฐฐํฌ๋ฅผ ์œ„ํ•œ ์ตœ์ ํ™”๋œ ๋นŒ๋“œ ํŒŒ์ผ์„ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.

ํŠนํžˆ npm install ๋ช…๋ น์–ด๋Š” ํ”„๋กœ์ ํŠธ๋ฅผ ์ฒ˜์Œ ๋ฐ›๊ฑฐ๋‚˜, ์ƒˆ๋กœ์šด ์˜์กด์„ฑ์„ ์ถ”๊ฐ€ํ•œ ํ›„ ํ˜‘์—…ํ•  ๋•Œ ๋ฐ˜๋“œ์‹œ ํ•„์š”ํ•œ ๋ช…๋ น์–ด์ž…๋‹ˆ๋‹ค. npm install์„ ์‹คํ–‰ํ•ด์•ผ๋งŒ ํ”„๋กœ์ ํŠธ๊ฐ€ ์ •์ƒ์ ์œผ๋กœ ๋™์ž‘ํ•ฉ๋‹ˆ๋‹ค.

๐Ÿ’ก ๋ฆฌ์•กํŠธ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์ถ”๊ฐ€ npm install ์‚ฌ์šฉ๋ฒ• ์ƒ์„ธ ๋”๋ณด๊ธฐ

๋ฆฌ์•กํŠธ ๊ฐœ๋ฐœ์„ ํ•˜๋‹ค ๋ณด๋ฉด, ๋ผ์šฐํŒ…(React Router), ์ƒํƒœ ๊ด€๋ฆฌ(Redux, Zustand), UI ์ปดํฌ๋„ŒํŠธ(Material UI) ๋“ฑ ๋‹ค์–‘ํ•œ ์™ธ๋ถ€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์„ค์น˜ํ•ด์•ผ ํ•  ํ•„์š”๊ฐ€ ์ƒ๊น๋‹ˆ๋‹ค. ์ด๋•Œ๋„ ์—ญ์‹œ npm ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

ํŠน์ • ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์„ค์น˜ํ•  ๋•Œ๋Š” npm install [ํŒจํ‚ค์ง€ ์ด๋ฆ„] ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•˜๋ฉฐ, ์ค„์—ฌ์„œ npm i [ํŒจํ‚ค์ง€ ์ด๋ฆ„]๋กœ ์‚ฌ์šฉํ•˜๊ธฐ๋„ ํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, ๋ฆฌ์•กํŠธ ํ”„๋กœ์ ํŠธ์—์„œ ๊ฐ€์žฅ ๋งŽ์ด ์‚ฌ์šฉ๋˜๋Š” ๋ผ์šฐํŒ… ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์ธ react-router-dom์„ ์„ค์น˜ํ•˜๋Š” ๋ช…๋ น์–ด๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

npm install react-router-dom

์„ค์น˜๊ฐ€ ์™„๋ฃŒ๋˜๋ฉด, ํ•ด๋‹น ํŒจํ‚ค์ง€๋Š” ํ”„๋กœ์ ํŠธ ํด๋” ๋‚ด์˜ node_modules ํด๋”์— ๋‹ค์šด๋กœ๋“œ๋˜๊ณ , ํ”„๋กœ์ ํŠธ์˜ ์„ค์ • ํŒŒ์ผ์ธ package.json ํŒŒ์ผ์˜ dependencies ํ•ญ๋ชฉ์— ์ž๋™์œผ๋กœ ๊ธฐ๋ก๋ฉ๋‹ˆ๋‹ค. ์ด ๊ธฐ๋ก ๋•๋ถ„์— ๋‹ค๋ฅธ ๊ฐœ๋ฐœ์ž์™€ ํ˜‘์—…ํ•  ๋•Œ๋„ npm install ๋ช…๋ น์–ด ํ•˜๋‚˜๋กœ ๋ชจ๋“  ํ•„์š”ํ•œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์‰ฝ๊ฒŒ ์„ค์น˜ํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

๊ฐœ๋ฐœ ์˜์กด์„ฑ ์„ค์น˜ npm i -D ์˜ต์…˜ ๋ณด๊ธฐ

์ผ๋ถ€ ํŒจํ‚ค์ง€๋Š” ์‹ค์ œ ์„œ๋น„์Šค ์šด์˜์—๋Š” ํ•„์š”ํ•˜์ง€ ์•Š๊ณ , ๊ฐœ๋ฐœ ๊ณผ์ •์—์„œ๋งŒ ํ•„์š”ํ•œ ๊ฒฝ์šฐ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, ์ฝ”๋“œ ํฌ๋งทํŒ…์„ ์œ„ํ•œ eslint๋‚˜ prettier์™€ ๊ฐ™์€ ๋„๊ตฌ๊ฐ€ ์—ฌ๊ธฐ์— ํ•ด๋‹นํ•ฉ๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ํŒจํ‚ค์ง€๋Š” devDependencies๋กœ ์„ค์น˜ํ•˜๋Š” ๊ฒƒ์ด ์ผ๋ฐ˜์ ์ด๋ฉฐ, ์ด๋•Œ๋Š” -D ๋˜๋Š” --save-dev ์˜ต์…˜์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

npm install eslint --save-dev
๋˜๋Š”
npm i prettier -D

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

๐Ÿ“Œ npm ๋ฒ„์ „ ๋ฐ ์บ์‹œ ๊ด€๋ฆฌ ํŒ ํ™•์ธํ•˜๊ธฐ

npm์„ ์˜ค๋žซ๋™์•ˆ ์‚ฌ์šฉํ•˜๋‹ค ๋ณด๋ฉด ๋•Œ๋กœ๋Š” ์˜ˆ์ƒ์น˜ ๋ชปํ•œ ์˜ค๋ฅ˜์— ์ง๋ฉดํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋Š” ์ข…์ข… npm ์ž์ฒด์˜ ๋ฌธ์ œ, ํŒจํ‚ค์ง€ ๊ฐ„์˜ ์ถฉ๋Œ, ๋˜๋Š” ์บ์‹œ(Cache) ๋ฌธ์ œ๋กœ ์ธํ•ด ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค. ๊ฐœ๋ฐœ ํ™˜๊ฒฝ์„ ์›ํ™œํ•˜๊ฒŒ ์œ ์ง€ํ•˜๊ธฐ ์œ„ํ•œ ๋ช‡ ๊ฐ€์ง€ npm ๊ด€๋ฆฌ ํŒ์„ ์•Œ๋ ค๋“œ๋ฆฝ๋‹ˆ๋‹ค.

npm ๋ฒ„์ „ ์—…๋ฐ์ดํŠธ ๋ฐ ์บ์‹œ ์‚ญ์ œ ๋ณด๊ธฐ

npm ์ž์ฒด๋ฅผ ์ตœ์‹  ๋ฒ„์ „์œผ๋กœ ์œ ์ง€ํ•˜๋Š” ๊ฒƒ์€ ๋ณด์•ˆ ๋ฐ ๊ธฐ๋Šฅ ๊ฐœ์„ ์„ ์œ„ํ•ด ์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค. npm์„ ์—…๋ฐ์ดํŠธํ•˜๋ ค๋ฉด ์•„๋ž˜ ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. (์ด๋•Œ npm์€ ์ด๋ฏธ Node.js์™€ ํ•จ๊ป˜ ์„ค์น˜๋˜์–ด ์žˆ์œผ๋ฏ€๋กœ, ๊ธ€๋กœ๋ฒŒ ์„ค์น˜ ์˜ต์…˜ -g๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.)

npm install -g npm@latest

๋˜ํ•œ, ํŒจํ‚ค์ง€ ์„ค์น˜ ์ค‘ ๋ฐ˜๋ณต์ ์ธ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•˜๊ฑฐ๋‚˜ ์˜ˆ๊ธฐ์น˜ ์•Š์€ ๋™์ž‘์„ ํ•  ๊ฒฝ์šฐ, npm์ด ์ €์žฅํ•ด ๋‘” ์บ์‹œ๋ฅผ ์‚ญ์ œํ•ด ๋ณด๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค. ์บ์‹œ๋Š” npm์ด ๋‹ค์šด๋กœ๋“œํ•œ ํŒจํ‚ค์ง€์˜ ๋ณต์‚ฌ๋ณธ์„ ์ €์žฅํ•ด ๋‘๋Š” ๊ณณ์ž…๋‹ˆ๋‹ค.

npm cache clean --force

์ด ๋ช…๋ น์€ ์บ์‹œ ํด๋”์— ์ €์žฅ๋œ ๋ชจ๋“  ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ•์ œ๋กœ ์‚ญ์ œํ•˜์—ฌ, ๋‹ค์Œ์— ํŒจํ‚ค์ง€๋ฅผ ์„ค์น˜ํ•  ๋•Œ ์™„์ „ํžˆ ์ƒˆ๋กœ์šด ํŒŒ์ผ์„ ๋‹ค์šด๋กœ๋“œํ•˜๋„๋ก ํ•ฉ๋‹ˆ๋‹ค. ๋ฌธ์ œ๊ฐ€ ํ•ด๊ฒฐ๋˜์ง€ ์•Š์„ ๋•Œ ์‹œ๋„ํ•ด ๋ณผ ์ˆ˜ ์žˆ๋Š” ์œ ์šฉํ•œ ํŠธ๋Ÿฌ๋ธ”์ŠˆํŒ… ๋ฐฉ๋ฒ•์ž…๋‹ˆ๋‹ค.

๐Ÿค” Create React App(CRA)๊ณผ Vite์˜ ์ฐจ์ด์  ํ™•์ธํ•˜๊ธฐ

2024๋…„ ์ด์ „์— ๋ฆฌ์•กํŠธ๋ฅผ ์ ‘ํ–ˆ๋˜ ๊ฐœ๋ฐœ์ž๋ผ๋ฉด npx create-react-app ๋ช…๋ น์–ด๋ฅผ ๊ธฐ์–ตํ•˜์‹ค ๊ฒ๋‹ˆ๋‹ค. ์ด๊ฒƒ์ด ๋ฐ”๋กœ Meta(๊ตฌ Facebook)์—์„œ ๊ณต์‹์ ์œผ๋กœ ์ œ๊ณตํ–ˆ๋˜ ํ”„๋กœ์ ํŠธ ์ƒ์„ฑ ๋„๊ตฌ์ธ **Create React App (CRA)**์ž…๋‹ˆ๋‹ค. CRA๋Š” ๋ชจ๋“  ์„ค์ •์„ ๋‚ด๋ถ€์ ์œผ๋กœ ์ˆจ๊ธฐ๊ณ  ๋ฐ”๋กœ ๊ฐœ๋ฐœ์„ ์‹œ์ž‘ํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ฃผ๋Š” ์žฅ์ ์ด ์žˆ์—ˆ์œผ๋‚˜, ์„ค์ •์ด ๋ณต์žกํ•˜๊ณ  ์ดˆ๊ธฐ ๊ตฌ๋™ ๋ฐ ๋นŒ๋“œ ์†๋„๊ฐ€ ๋А๋ฆฌ๋‹ค๋Š” ๋‹จ์ ์ด ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค.

๋ฐ˜๋ฉด, Vite๋Š” ES ๋ชจ๋“ˆ(ES Modules) ๋„ค์ดํ‹ฐ๋ธŒ ์ง€์›์„ ๋ฐ”ํƒ•์œผ๋กœ ๊ฐœ๋ฐœ ์„œ๋ฒ„๋ฅผ ๊ตฌ๋™ํ•˜๊ธฐ ๋•Œ๋ฌธ์—, CRA์— ๋น„ํ•ด ์••๋„์ ์œผ๋กœ ๋น ๋ฅธ ์‹œ์ž‘ ์†๋„์™€ HMR ์†๋„๋ฅผ ์ž๋ž‘ํ•ฉ๋‹ˆ๋‹ค. CRA๊ฐ€ ์›นํŒฉ(Webpack) ๊ธฐ๋ฐ˜์œผ๋กœ ๋ณต์žกํ•œ ์„ค์ •์„ ํ•„์š”๋กœ ํ•˜๋Š” ๋ฐ˜๋ฉด, Vite๋Š” Rollup ๊ธฐ๋ฐ˜์œผ๋กœ ๋” ๊ฐ€๋ณ๊ณ  ํšจ์œจ์ ์ž…๋‹ˆ๋‹ค. ํ˜„์žฌ ๋ฆฌ์•กํŠธ ๊ณต์‹ ๋ฌธ์„œ์—์„œ๋„ CRA๋ณด๋‹ค๋Š” Vite๋‚˜ Next.js์™€ ๊ฐ™์€ ๋ฉ”ํƒ€ํ”„๋ ˆ์ž„์›Œํฌ ์‚ฌ์šฉ์„ ๊ถŒ์žฅํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

๊ฒฐ๋ก ์ ์œผ๋กœ, ์ƒˆ๋กœ์šด ๋ฆฌ์•กํŠธ ํ”„๋กœ์ ํŠธ๋ฅผ ์‹œ์ž‘ํ•œ๋‹ค๋ฉด, ๊ฐœ๋ฐœ ์†๋„์™€ ์ƒ์‚ฐ์„ฑ ์ธก๋ฉด์—์„œ Vite๋ฅผ ์„ ํƒํ•˜๋Š” ๊ฒƒ์ด 2025๋…„ ๊ฐ€์žฅ ํ•ฉ๋ฆฌ์ ์ธ ์„ ํƒ์ž…๋‹ˆ๋‹ค.

โญ ๋ฆฌ์•กํŠธ ์„ค์น˜ ๋ฐ ํ™˜๊ฒฝ ๊ตฌ์ถ• ์š”์•ฝ ๋ฐ ๋‹ค์Œ ๋‹จ๊ณ„ ์‹ ์ฒญํ•˜๊ธฐ

์ง€๊ธˆ๊นŒ์ง€ Node.js์™€ npm์„ ์ด์šฉํ•œ 2025๋…„ ์ตœ์‹  ๋ฆฌ์•กํŠธ ์„ค์น˜ ๋ฐ ํ™˜๊ฒฝ ๊ตฌ์ถ• ๋ฐฉ๋ฒ•์„ ์•Œ์•„๋ณด์•˜์Šต๋‹ˆ๋‹ค. ํ•ต์‹ฌ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

  • Node.js(LTS ๋ฒ„์ „) ์„ค์น˜๋ฅผ ํ†ตํ•ด npm์„ ํ™•๋ณดํ•œ๋‹ค.
  • npm create vite@latest ๋ช…๋ น์–ด๋กœ ๋น ๋ฅด๊ณ  ํšจ์œจ์ ์ธ Vite ๊ธฐ๋ฐ˜ ๋ฆฌ์•กํŠธ ํ”„๋กœ์ ํŠธ๋ฅผ ์ƒ์„ฑํ•œ๋‹ค.
  • npm install๋กœ ์˜์กด์„ฑ์„ ์„ค์น˜ํ•˜๊ณ , npm run dev๋กœ ๊ฐœ๋ฐœ์„ ์‹œ์ž‘ํ•œ๋‹ค.
  • ์ถ”๊ฐ€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋Š” npm install [ํŒจํ‚ค์ง€ ์ด๋ฆ„]์„ ์‚ฌ์šฉํ•˜์—ฌ ์„ค์น˜ํ•œ๋‹ค.

์ด ๊ฐ€์ด๋“œ๋งŒ ์žˆ๋‹ค๋ฉด ์ดˆ๋ณด์ž๋„ ์‰ฝ๊ฒŒ ๋ฆฌ์•กํŠธ ๊ฐœ๋ฐœ ํ™˜๊ฒฝ์„ ๊ตฌ์ถ•ํ•˜๊ณ  ์›น ๊ฐœ๋ฐœ์˜ ์—ฌ์ •์„ ์‹œ์ž‘ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์„ฑ๊ณต์ ์ธ ๊ฐœ๋ฐœ ํ™˜๊ฒฝ ๊ตฌ์ถ•์€ ๊ฐœ๋ฐœ์˜ ์ ˆ๋ฐ˜์ž…๋‹ˆ๋‹ค. ์ด์ œ ๋‹ค์Œ ๋‹จ๊ณ„์ธ ๋ฆฌ์•กํŠธ ์ปดํฌ๋„ŒํŠธ ๊ฐœ๋ฐœ ํ•™์Šต์œผ๋กœ ๋‚˜์•„๊ฐ€์„ธ์š”!


์ž์ฃผ ๋ฌป๋Š” ์งˆ๋ฌธ (FAQ)

Q1. npm๊ณผ npx์˜ ์ฐจ์ด์ ์€ ๋ฌด์—‡์ธ๊ฐ€์š”?

A. npm(Node Package Manager)์€ ํŒจํ‚ค์ง€(๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ)๋ฅผ ์„ค์น˜ํ•˜๊ณ  ๊ด€๋ฆฌํ•˜๋Š” ๋„๊ตฌ์ž…๋‹ˆ๋‹ค. ๋ฐ˜๋ฉด, npx(Node Package eXecutor)๋Š” npm 5.2.0 ๋ฒ„์ „๋ถ€ํ„ฐ ์ถ”๊ฐ€๋œ ๋„๊ตฌ๋กœ, ๋กœ์ปฌ ๋˜๋Š” ์›๊ฒฉ์— ์„ค์น˜๋œ ๋…ธ๋“œ ํŒจํ‚ค์ง€์˜ ์‹คํ–‰ ํŒŒ์ผ์„ ํ•œ ๋ฒˆ๋งŒ ์‹คํ–‰ํ•˜๊ณ  ์‹ถ์„ ๋•Œ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, npx create-react-app์€ CRA๋ฅผ ์‹œ์Šคํ…œ์— ์˜๊ตฌ์ ์œผ๋กœ ์„ค์น˜ํ•˜์ง€ ์•Š๊ณ  ํ•œ ๋ฒˆ ์‹คํ–‰๋งŒ ํ•˜๋ ค๋Š” ๋ชฉ์ ์œผ๋กœ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. ์ตœ์‹  Vite ํ”„๋กœ์ ํŠธ ์ƒ์„ฑ ๋ช…๋ น์–ด์ธ npm create vite@latest๋„ ๋‚ด๋ถ€์ ์œผ๋กœ npx์˜ ๊ฐœ๋…์ด ์ ์šฉ๋˜์–ด ์ตœ์‹  ํŒจํ‚ค์ง€ ์‹คํ–‰ ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

Q2. ๋ฆฌ์•กํŠธ ์„ค์น˜ ์‹œ npm ๋Œ€์‹  yarn์ด๋‚˜ pnpm์„ ์‚ฌ์šฉํ•ด๋„ ๋˜๋‚˜์š”?

A. ๋„ค, ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค. npm, yarn, pnpm ๋ชจ๋‘ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ํŒจํ‚ค์ง€ ๊ด€๋ฆฌ ๋„๊ตฌ์ž…๋‹ˆ๋‹ค. Yarn์€ Facebook์—์„œ ๊ฐœ๋ฐœํ•˜์—ฌ npm์˜ ๋‹จ์ (์†๋„, ๋ณด์•ˆ)์„ ๊ฐœ์„ ํ–ˆ๊ณ , pnpm์€ ๋””์Šคํฌ ๊ณต๊ฐ„ ํšจ์œจ์„ฑ์„ ๊ทน๋Œ€ํ™”ํ•œ ๋„๊ตฌ์ž…๋‹ˆ๋‹ค. ์ด๋“ค ๋ชจ๋‘ ๋ฆฌ์•กํŠธ ํ”„๋กœ์ ํŠธ ์ƒ์„ฑ ๋ฐ ๊ด€๋ฆฌ์— ์‚ฌ์šฉ๋  ์ˆ˜ ์žˆ์œผ๋ฉฐ, npm install ๋Œ€์‹  yarn install ๋˜๋Š” pnpm install๊ณผ ๊ฐ™์€ ํ•ด๋‹น ๋„๊ตฌ์˜ ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค. ๊ธฐ๋Šฅ์ ์ธ ์ฐจ์ด๋Š” ์žˆ์ง€๋งŒ, ๊ธฐ๋ณธ์ ์œผ๋กœ ๋™์ผํ•œ ์—ญํ• ์„ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค.

Q3. npm install ํ›„ node_modules ํด๋”๋ฅผ Git์— ์˜ฌ๋ ค์•ผ ํ•˜๋‚˜์š”?

A. ์•„๋‹™๋‹ˆ๋‹ค. node_modules ํด๋”๋Š” ์„ค์น˜๋œ ๋ชจ๋“  ์˜์กด์„ฑ ํŒจํ‚ค์ง€ ํŒŒ์ผ์ด ๋“ค์–ด ์žˆ์–ด ์šฉ๋Ÿ‰์ด ๋งค์šฐ ํฝ๋‹ˆ๋‹ค. ์ด ํด๋”๋Š” package.json ํŒŒ์ผ์— ๊ธฐ๋ก๋œ ๋‚ด์šฉ์„ ๊ธฐ๋ฐ˜์œผ๋กœ ์–ธ์ œ๋“ ์ง€ npm install ๋ช…๋ น์–ด๋กœ ์žฌ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ Git๊ณผ ๊ฐ™์€ ๋ฒ„์ „ ๊ด€๋ฆฌ ์‹œ์Šคํ…œ์— ์˜ฌ๋ฆฌ์ง€ ์•Š๊ณ , ํ”„๋กœ์ ํŠธ ํด๋”์— .gitignore ํŒŒ์ผ์„ ๋งŒ๋“ค์–ด์„œ ์ด ํด๋”๋ฅผ ์ œ์™ธํ•˜๋Š” ๊ฒƒ์ด ์ผ๋ฐ˜์ ์ž…๋‹ˆ๋‹ค. ํ˜‘์—…์ž๋“ค์€ ํ”„๋กœ์ ํŠธ๋ฅผ ํด๋ก (Clone) ๋ฐ›์€ ํ›„ npm install ๋ช…๋ น๋งŒ ์‹คํ–‰ํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค.

Q4. Vite ์„ค์น˜ ์‹œ TypeScript ๋Œ€์‹  JavaScript๋ฅผ ์„ ํƒํ•ด๋„ ๋˜๋‚˜์š”?

A. ๋„ค, ์™„์ „ํžˆ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค. TypeScript๋Š” JavaScript์— ์ •์  ํƒ€์ž… ์ฒดํฌ ๊ธฐ๋Šฅ์„ ์ถ”๊ฐ€ํ•œ ์–ธ์–ด๋กœ, ๋Œ€๊ทœ๋ชจ ํ”„๋กœ์ ํŠธ์—์„œ ์˜ค๋ฅ˜๋ฅผ ์ค„์ด๊ณ  ์ฝ”๋“œ ์•ˆ์ •์„ฑ์„ ๋†’์ด๋Š” ๋ฐ ์œ ์šฉํ•ฉ๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ์ดˆ๋ณด์ž๊ฐ€ ๋ฆฌ์•กํŠธ ๊ฐœ๋ฐœ์„ ์ฒ˜์Œ ์‹œ์ž‘ํ•œ๋‹ค๋ฉด, ๋จผ์ € JavaScript ํ™˜๊ฒฝ์— ์ต์ˆ™ํ•ด์ง„ ํ›„ TypeScript๋ฅผ ๋„์ž…ํ•˜๋Š” ๊ฒƒ์ด ํ•™์Šต ๋ถ€๋‹ด์„ ์ค„์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. Vite ํ”„๋กœ์ ํŠธ ์ƒ์„ฑ ์‹œ Select a variant ๋‹จ๊ณ„์—์„œ JavaScript๋ฅผ ์„ ํƒํ•˜์‹œ๋ฉด ๋ฉ๋‹ˆ๋‹ค.