๋ฐ˜์‘ํ˜•

React์™€ Vite ํ”„๋กœ์ ํŠธ๋ฅผ ์‹œ์ž‘์„ ์œ„ํ•œ ์…‹ํŒ…ํ•˜๊ธฐ

 

1.  React + Vite ํ”„๋กœ์ ํŠธ ์ƒ์„ฑ

npm create vite@latest ํ”„๋กœ์ ํŠธ๋ช… --template react


* * React + Typescript + Vite ํ”„๋กœ์ ํŠธ ์ƒ์„ฑ

npm create vite@latest ํ”„๋กœ์ ํŠธ๋ช… --template react-ts

 

2. ํ”„๋กœ์ ํŠธ ํด๋”๋กœ ์ด๋™

 
cd ํ”„๋กœ์ ํŠธ๋ช…

 

3. ํ•„์š”ํ•œ ํŒจํ‚ค์ง€ ์„ค์น˜

npm install

 

4. ๊ฐœ๋ฐœ ์„œ๋ฒ„ ์‹คํ–‰

npm run dev

 

 

๐ŸŽˆ Vite๋ฅผ ์‚ฌ์šฉํ•œ ์ด์œ 

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

  1. ๋น ๋ฅธ ๊ฐœ๋ฐœ ์„œ๋ฒ„ ์‹œ์ž‘: Vite๋Š” ๋ชจ๋“ˆ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•„์š”ํ•œ ํŒŒ์ผ๋งŒ ๋กœ๋”ฉํ•˜๋ฏ€๋กœ, ๊ฐœ๋ฐœ ์„œ๋ฒ„๊ฐ€ ์ฆ‰์‹œ ์‹œ์ž‘๋œ๋‹ค. ํŠนํžˆ ํ”„๋กœ์ ํŠธ ๊ทœ๋ชจ๊ฐ€ ์ปค์งˆ์ˆ˜๋ก ์ด๋Ÿฌํ•œ ๋น ๋ฅธ ๋กœ๋”ฉ ์†๋„๋Š” ํฐ ์ฐจ์ด๋ฅผ ๋งŒ๋“ ๋‹ค. ๊ฐœ๋ฐœ ์ดˆ๊ธฐ๋ถ€ํ„ฐ ๋น ๋ฅด๊ฒŒ ํ…Œ์ŠคํŠธํ•˜๊ณ  ํ”ผ๋“œ๋ฐฑ์„ ๋ฐ›์„ ์ˆ˜ ์žˆ์–ด ๊ฐœ๋ฐœ ์†๋„๊ฐ€ ํ–ฅ์ƒ๋œ๋‹ค.
  2. ํšจ์œจ์ ์ธ Hot Module Replacement (HMR): Vite๋Š” ๋ณ€๊ฒฝ๋œ ๋ชจ๋“ˆ๋งŒ ๊ฐฑ์‹ ํ•˜๋Š” ๋ฐฉ์‹์˜ HMR์„ ์ง€์›ํ•˜์—ฌ, ์ฝ”๋“œ ์ˆ˜์ • ํ›„ ์ฆ‰๊ฐ์ ์œผ๋กœ ํ™”๋ฉด์— ๋ฐ˜์˜๋œ๋‹ค. ์ด๋กœ ์ธํ•ด ์ฝ”๋“œ ์ˆ˜์ • ์‚ฌํ•ญ์„ ์‹ค์‹œ๊ฐ„์œผ๋กœ ํ™•์ธํ•˜๋ฉฐ ๊ฐœ๋ฐœํ•  ์ˆ˜ ์žˆ์–ด ์ž‘์—… ํšจ์œจ์„ฑ์ด ๋†’์•„์ง„๋‹ค.
  3. ์ตœ์ ํ™”๋œ ๋นŒ๋“œ: Vite๋Š” ๊ฐœ๋ฐœ ํ™˜๊ฒฝ๊ณผ ๋นŒ๋“œ ํ™˜๊ฒฝ์„ ๊ฐ๊ฐ ์ตœ์ ํ™”ํ•˜์—ฌ ์‚ฌ์šฉํ•œ๋‹ค. ๊ฐœ๋ฐœ ์ค‘์—๋Š” ESM(ES ๋ชจ๋“ˆ)์„ ์‚ฌ์šฉํ•˜๊ณ , ์ตœ์ข… ๋นŒ๋“œ ์‹œ์—๋Š” Rollup์„ ํ†ตํ•ด ๋ฒˆ๋“ค๋ง์„ ์ตœ์ ํ™”ํ•˜์—ฌ ์„ฑ๋Šฅ ์ข‹์€ ๊ฒฐ๊ณผ๋ฌผ์„ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋‹ค.
  4. ์„ค์ •์˜ ๊ฐ„๋‹จํ•จ๊ณผ ์œ ์—ฐ์„ฑ: Vite๋Š” ์„ค์ •์ด ๊ฐ„๋‹จํ•ด ๋น ๋ฅด๊ฒŒ ๊ฐœ๋ฐœ์„ ์‹œ์ž‘ํ•  ์ˆ˜ ์žˆ๋„๋ก ๋•๋Š”๋‹ค. vite.config.js๋ฅผ ํ†ตํ•ด ํ•„์š”ํ•œ ์„ค์ •์„ ์‰ฝ๊ฒŒ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, React์™€ ๊ฐ™์€ ํ”„๋ ˆ์ž„์›Œํฌ์™€๋„ ์ž์—ฐ์Šค๋Ÿฝ๊ฒŒ ํ†ตํ•ฉ๋˜์–ด ์ถ”๊ฐ€ ์„ค์ • ์—†์ด๋„ ๊ฐœ๋ฐœ์„ ์ง„ํ–‰ํ•˜๊ธฐ ์šฉ์ดํ•˜๋‹ค.

์ด๋Ÿฌํ•œ ์ด์œ ๋กœ Vite๋Š” ํ”„๋กœ์ ํŠธ์—์„œ ๋น ๋ฅด๊ณ  ํšจ์œจ์ ์ธ ๊ฐœ๋ฐœ ํ™˜๊ฒฝ์„ ์ง€์›ํ•˜๋ฉฐ, ์ดˆ๊ธฐ ๋กœ๋”ฉ๋ถ€ํ„ฐ ๋นŒ๋“œ๊นŒ์ง€ ๊ฐœ๋ฐœ์ž๊ฐ€ ์›ํ•˜๋Š” ์„ฑ๋Šฅ๊ณผ ์œ ์—ฐ์„ฑ์„ ์ œ๊ณตํ•œ๋‹ค. Vite๋ฅผ ํ†ตํ•ด ์ƒ์‚ฐ์„ฑ์„ ๋†’์ด๊ณ  ๊ฐœ๋ฐœ ํ”„๋กœ์„ธ์Šค๋ฅผ ๊ฐ„์†Œํ™”ํ•˜๋Š” ๊ฒƒ์ด ์ฃผ์š” ๋ชฉ์ ์ด์—ˆ๋‹ค.

 

 

๐ŸŽˆ ๊ธฐํƒ€ ๋‹ค๋ฅธ ๋ฒˆ๋“ค๋Ÿฌ ๋„๊ตฌ๋“ค

  1. Webpack:
    • ์„ค๋ช…: JavaScript ์ƒํƒœ๊ณ„์—์„œ ๊ฐ€์žฅ ๋„๋ฆฌ ์‚ฌ์šฉ๋˜๋Š” ๋ฒˆ๋“ค๋Ÿฌ๋กœ, ๋‹ค์–‘ํ•œ ํ”Œ๋Ÿฌ๊ทธ์ธ๊ณผ ์„ค์ • ์˜ต์…˜์„ ์ œ๊ณตํ•ด ์ปค์Šคํ„ฐ๋งˆ์ด์ง•์ด ์šฉ์ดํ•˜๋‹ค.
    • ์žฅ์ : ๋ฐฉ๋Œ€ํ•œ ํ”Œ๋Ÿฌ๊ทธ์ธ ์ƒํƒœ๊ณ„, ๋†’์€ ํ˜ธํ™˜์„ฑ, ์œ ์—ฐํ•œ ์„ค์ •. ๋Œ€๊ทœ๋ชจ ํ”„๋กœ์ ํŠธ์— ์ ํ•ฉํ•˜๋‹ค.
    • ๋‹จ์ : ์„ค์ •์ด ๋ณต์žกํ•˜๊ณ , ์ดˆ๊ธฐ ๋กœ๋”ฉ ์†๋„๊ฐ€ ๋Š๋ฆฌ๋ฉฐ, HMR ์†๋„๊ฐ€ Vite๋ณด๋‹ค ๋‹ค์†Œ ๋Š๋ฆด ์ˆ˜ ์žˆ๋‹ค.
    • ์ถ”์ฒœ ์ƒํ™ฉ: ์ปค์Šคํ…€ ์„ค์ •์ด ๋ณต์žกํ•˜๊ฒŒ ํ•„์š”ํ•œ ๋Œ€๊ทœ๋ชจ ํ”„๋กœ์ ํŠธ์— ์œ ๋ฆฌํ•˜๋‹ค.
  2. Parcel:
    • ์„ค๋ช…: Parcel์€ ์„ค์ •์ด ๊ฑฐ์˜ ํ•„์š”ํ•˜์ง€ ์•Š์€ ๋ฒˆ๋“ค๋Ÿฌ๋กœ, ‘์ œ๋กœ ์„ค์ •’์„ ๊ฐ•์กฐํ•˜๋ฉฐ ์ž๋™ ์ตœ์ ํ™” ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•œ๋‹ค.
    • ์žฅ์ : ์ดˆ๋ณด์ž๋„ ์‰ฝ๊ฒŒ ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ๋น ๋ฅธ ๋นŒ๋“œ ๋ฐ HMR์„ ์ง€์›ํ•ด ๊ฐœ๋ฐœ ์ƒ์‚ฐ์„ฑ์„ ๋†’์ธ๋‹ค.
    • ๋‹จ์ : ํ”Œ๋Ÿฌ๊ทธ์ธ๊ณผ ์„ค์ • ๋ฉด์—์„œ๋Š” Webpack์ด๋‚˜ Vite์— ๋น„ํ•ด ํ•œ๊ณ„๊ฐ€ ์žˆ์„ ์ˆ˜ ์žˆ๋‹ค.
    • ์ถ”์ฒœ ์ƒํ™ฉ: ์„ค์ • ์—†์ด ๋น ๋ฅด๊ฒŒ ์‹œ์ž‘ํ•  ์ˆ˜ ์žˆ๋Š” ๊ฐœ๋ฐœ ํ™˜๊ฒฝ์ด ํ•„์š”ํ•œ ํ”„๋กœ์ ํŠธ์— ์ ํ•ฉํ•˜๋‹ค.
  3. Snowpack:
    • ์„ค๋ช…: Snowpack์€ Vite์™€ ์œ ์‚ฌํ•˜๊ฒŒ ESM์„ ํ™œ์šฉํ•ด ํ•„์š”ํ•œ ๋ชจ๋“ˆ๋งŒ ๋กœ๋“œํ•˜์—ฌ ๊ฐœ๋ฐœ ์†๋„๋ฅผ ๋†’์ธ๋‹ค.
    • ์žฅ์ : ๋น ๋ฅธ ๊ฐœ๋ฐœ ์„œ๋ฒ„ ์‹œ์ž‘ ๋ฐ HMR, ๋ชจ๋“ˆ ์บ์‹ฑ ๊ธฐ๋Šฅ์ด ๋›ฐ์–ด๋‚˜๋‹ค. Vite์™€ ๋น„์Šทํ•œ ๋ชจ๋“ˆ ๊ธฐ๋ฐ˜ ๋ฐฉ์‹์ด๋ผ ๋กœ๋”ฉ ์†๋„๊ฐ€ ๋น ๋ฅด๋‹ค.
    • ๋‹จ์ : ์ตœ๊ทผ ์—…๋ฐ์ดํŠธ ๋นˆ๋„๊ฐ€ ์ค„์–ด๋“ค๋ฉด์„œ Vite๋งŒํผ ํ™œ๋ฐœํžˆ ์‚ฌ์šฉ๋˜์ง€ ์•Š๋Š” ํŽธ์ด๋‹ค.
    • ์ถ”์ฒœ ์ƒํ™ฉ: Vite์˜ ๋Œ€์ฒด๋กœ ๊ณ ๋ คํ•  ๋งŒํ•˜์ง€๋งŒ, ์ƒํƒœ๊ณ„์™€ ์—…๋ฐ์ดํŠธ๊ฐ€ ํ™œ๋ฐœํ•œ ์ตœ์‹  ํ”„๋กœ์ ํŠธ์—์„œ๋Š” Vite๊ฐ€ ๋” ๋‚˜์€ ์„ ํƒ์ผ ์ˆ˜ ์žˆ๋‹ค.
  4. esbuild:
    • ์„ค๋ช…: esbuild๋Š” ์ดˆ๊ณ ์† JavaScript ๋ฒˆ๋“ค๋Ÿฌ๋กœ, Go ์–ธ์–ด๋กœ ์ž‘์„ฑ๋˜์–ด ๋งค์šฐ ๋น ๋ฅธ ๋นŒ๋“œ ์†๋„๋ฅผ ์ œ๊ณตํ•œ๋‹ค.
    • ์žฅ์ : ๋นŒ๋“œ ์†๋„๊ฐ€ ๋งค์šฐ ๋น ๋ฅด๋ฉฐ, ๋งŽ์€ ํ”„๋กœ์ ํŠธ์—์„œ ๋ฏธ๋“ค์›จ์–ด๋‚˜ ํ”Œ๋Ÿฌ๊ทธ์ธ์œผ๋กœ ์‚ฌ์šฉ๋œ๋‹ค.
    • ๋‹จ์ : ๊ธฐ๋Šฅ์ด ๊ธฐ๋ณธ์ ์ธ ๋ฒˆ๋“ค๋ง์— ์ง‘์ค‘๋˜์–ด ์žˆ์–ด, ๋ณต์žกํ•œ ์„ค์ •์„ ๋‹ค๋ฃจ๊ธฐ์—๋Š” ๋‹ค์†Œ ํ•œ๊ณ„๊ฐ€ ์žˆ๋‹ค.
    • ์ถ”์ฒœ ์ƒํ™ฉ: ๋นŒ๋“œ ์†๋„๊ฐ€ ๋งค์šฐ ์ค‘์š”ํ•œ ํ”„๋กœ์ ํŠธ์—์„œ, ๋ฒˆ๋“ค๋ง ๋ฐ ํŠธ๋žœ์ŠคํŒŒ์ผ๋ง๋งŒ ํ•„์š”ํ•  ๋•Œ ์‚ฌ์šฉํ•˜๊ธฐ ์ข‹๋‹ค.

์ด์™ธ์—๋„ ํ”„๋กœ์ ํŠธ์˜ ํŠน์„ฑ๊ณผ ์š”๊ตฌ ์‚ฌํ•ญ์— ๋”ฐ๋ผ Rollup๊ณผ ๊ฐ™์€ ๋„๊ตฌ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜๋„ ์žˆ๋‹ค.

 

๋ฐ˜์‘ํ˜•

+ Recent posts