๐Ÿ˜ต ๋“ค์–ด๊ฐ€๋ฉฐ


์™œ ์šฐ๋ฆฌ๋Š” ์›นํŒฉ๋Œ€์‹  ๋น„ํŠธ๋ฅผ ์„ ํƒํ–ˆ์„๊นŒ? ํ˜„์žฌ ๊ตฌ์ถ•ํ•˜๊ณ  ์žˆ๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์—์„œ ๋น„ํŠธ๋ฅผ ์ฒ˜์Œ ์‚ฌ์šฉํ•ด๋ณด์•˜๋‹ค. ๋ฌผ๋ก  ํšŒ์‚ฌ์—์„œ๋„ ์ฒ˜์Œ ์‹œ๋„ํ•˜์˜€๋‹ค. vite๋ฅผ ์ฑ„ํƒํ•œ๋ฐ๋Š” ์ด์œ ๊ฐ€ ์žˆ์„ ๊ฒƒ์ธ๋ฐ, ์˜ค๋Š˜์€ ๊ทธ ์ด์œ ์— ๋Œ€ํ•ด ์ •๋ฆฌํ•ด๋ณด๊ณ ์žํ•œ๋‹ค.



Webpack VS Vite


Webpack

Webpack์€ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ํŒŒ์ผ๊ณผ ๊ทธ ์˜์กด์„ฑ์„ ๋ถ„์„ํ•˜์—ฌ ํ•˜๋‚˜์˜ ๋ฒˆ๋“ค ํŒŒ์ผ๋กœ ๋ฌถ๋Š” ๋ฐฉ์‹์„ ์‚ฌ์šฉํ•œ๋‹ค. ์ด๋Š” ๋ธŒ๋ผ์šฐ์ €์— ์ „๋‹ฌํ•  ํŒŒ์ผ ์ˆ˜๋ฅผ ์ค„์ด๊ณ  ๋„คํŠธ์›Œํฌ ์š”์ฒญ์„ ์ตœ์ ํ™”ํ•˜๋ ค๋Š” ๋ชฉ์ ์ด ์žˆ์ง€๋งŒ, ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๋‹จ์ ์ด ์žˆ๋‹ค:

  1. ์ „์ฒด ๋ฒˆ๋“ค๋ง์˜ ๋น„์šฉ
    Webpack์€ ํ”„๋กœ์ ํŠธ์˜ ๋ชจ๋“  ํŒŒ์ผ์„ ๋ถ„์„ํ•œ ๋’ค ํ•˜๋‚˜์˜ ๋ฒˆ๋“ค ํŒŒ์ผ์„ ์ƒ์„ฑํ•œ๋‹ค. ์ž‘์€ ์ฝ”๋“œ ์ˆ˜์ •์ด ๋ฐœ์ƒํ•˜๋”๋ผ๋„ ์ „์ฒด ํŒŒ์ผ์„ ๋‹ค์‹œ ๋ฒˆ๋“ค๋งํ•ด์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋นŒ๋“œ ์†๋„๊ฐ€ ๋А๋ ค์งˆ ์ˆ˜ ์žˆ๋‹ค.
  2. ๋ฒˆ๋“ค ํฌ๊ธฐ ์ฆ๊ฐ€
    ํ”„๋กœ์ ํŠธ ๊ทœ๋ชจ๊ฐ€ ์ปค์งˆ์ˆ˜๋ก ์˜์กด์„ฑ ํŒŒ์ผ์˜ ๊ฐœ์ˆ˜์™€ ํฌ๊ธฐ๊ฐ€ ์ฆ๊ฐ€ํ•˜๋ฉฐ, ์ดˆ๊ธฐ ๋กœ๋“œ ์†๋„๋ฅผ ์ €ํ•˜์‹œํ‚จ๋‹ค.
  3. Interpreted Language์˜ ํ•œ๊ณ„
    Webpack์€ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋กœ ์ž‘์„ฑ๋˜์–ด ํ•œ ์ค„์”ฉ ์‹คํ–‰๋˜๋Š” ์ธํ„ฐํ”„๋ฆฌํ„ฐ ์–ธ์–ด ํŠน์„ฑ์„ ๊ฐ€์ง€๋ฉฐ, ๋Œ€๊ทœ๋ชจ ํ”„๋กœ์ ํŠธ์—์„œ๋Š” ์ฒ˜๋ฆฌ ์‹œ๊ฐ„์ด ๊ธธ์–ด์งˆ ์ˆ˜ ์žˆ๋‹ค.
  4. ์„ค์ •์˜ ๋ณต์žก์„ฑ
    ๋‹ค์–‘ํ•œ ์š”๊ตฌ์‚ฌํ•ญ์„ ์ถฉ์กฑํ•˜๋ ค๋ฉด Webpack ์„ค์ • ํŒŒ์ผ์ด ๋ณต์žกํ•ด์ง€๋ฉฐ, ํ•™์Šต ๊ณก์„ ์ด ๋†’๋‹ค.



Vite

Vite๋Š” Webpack์˜ ๋‹จ์ ์„ ๊ฐœ์„ ํ•  ์ˆ˜ ์žˆ๋Š” ๋นŒ๋“œ ๋„๊ตฌ๋กœ, ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์ฃผ์š” ์žฅ์ ์ด ์žˆ๋‹ค

  1. ESM(ES Modules) ๊ธฐ๋ฐ˜ ๋กœ๋“œ
    Vite๋Š” ๋ธŒ๋ผ์šฐ์ €์˜ ๋„ค์ดํ‹ฐ๋ธŒ ES ๋ชจ๋“ˆ ์ง€์›์„ ํ™œ์šฉํ•˜์—ฌ ํ•„์š”ํ•œ ๋ชจ๋“ˆ๋งŒ ๊ฐœ๋ณ„์ ์œผ๋กœ ๋กœ๋“œํ•œ๋‹ค. ์ฆ‰, <script type="module"> ํƒœ๊ทธ๋ฅผ ํ†ตํ•ด ๋ธŒ๋ผ์šฐ์ €๊ฐ€ ํ•„์š”ํ•œ ํŒŒ์ผ์„ ๋ฐ”๋กœ ์š”์ฒญํ•˜๋ฏ€๋กœ, ์ „์ฒด ๋ฒˆ๋“ค๋ง ๊ณผ์ •์ด ๋ถˆํ•„์š”ํ•˜๋‹ค. ์ฝ”๋“œ ์ˆ˜์ • ์‹œ์—๋„ ๋ณ€๊ฒฝ๋œ ํŒŒ์ผ๋งŒ ๋‹ค์‹œ ๋กœ๋“œํ•˜๊ธฐ ๋•Œ๋ฌธ์— Hot Module Replacement(HMR) ์†๋„๊ฐ€ ๋›ฐ์–ด๋‚˜๋‹ค.
  2. ์ดˆ๊ธฐ ๋นŒ๋“œ ์†๋„ ๊ฐœ์„ 
    Vite๋Š” ์ „์ฒด ๋ฒˆ๋“ค๋ง์„ ์ƒ๋žตํ•˜๊ณ  ํ•„์š”ํ•œ ํŒŒ์ผ๋งŒ ์ฒ˜๋ฆฌํ•˜๋ฏ€๋กœ ๊ฐœ๋ฐœ ์„œ๋ฒ„ ์‹œ์ž‘ ์†๋„๊ฐ€ ๋งค์šฐ ๋น ๋ฅด๋‹ค.
  3. ๊ฐ„๋‹จํ•œ ์„ค์ •
    Webpack์— ๋น„ํ•ด ์„ค์ •์ด ๊ฐ„๋‹จํ•˜๊ณ , ๊ธฐ๋ณธ ์ œ๊ณต ๊ธฐ๋Šฅ๋งŒ์œผ๋กœ๋„ ๋งŽ์€ ์š”๊ตฌ์‚ฌํ•ญ์„ ์ถฉ์กฑํ•  ์ˆ˜ ์žˆ๋‹ค.
  4. CRA ๋Œ€์ฒด๋กœ ๋ถ€์ƒ
    Create React App(CRA)์ด ๊ณต์‹์ ์œผ๋กœ ๋” ์ด์ƒ ์ง€์›๋˜์ง€ ์•Š์œผ๋ฉด์„œ, ๋งŽ์€ ๊ฐœ๋ฐœ์ž๋“ค์ด Vite๋ฅผ ์„ ํƒํ•˜๊ณ  ์žˆ๋‹ค.



Vite ํ›„๊ธฐ


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