Vite๊ฐ€ ๋ญ˜๊นŒ?

6/22/2023FE

์˜ค๋Š˜์€ ์ตœ๊ทผ์— ๊ณต๋ถ€ํ•œ Vite์— ๋Œ€ํ•ด ์ •๋ฆฌํ•ด๋ณด๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค. Vite๋ฅผ ์–ด๋–ป๊ฒŒ ์ปค์Šคํ…€ํ• ์ง€๋ฅผ ๋‹ค๋ฃจ๊ธฐ ๋ณด๋‹ค๋Š” Vite๊ฐ€ ์™œ ๋‚˜์˜ค๊ฒŒ ๋˜์—ˆ๊ณ  Webpack ๊ฐ™์€ ๋ฒˆ๋“ค๋Ÿฌ์™€ ๋น„๊ตํ•˜์—ฌ ๋ฌด์—‡์ด ์ข‹์€์ง€ ๋“ฑ์„ ๊ฐ„๋‹จํ•˜๊ฒŒ ํ’€์–ด๋†“๊ณ ์ž ํ•ฉ๋‹ˆ๋‹ค.

Vite ํƒ„์ƒ ์ผํ™”

Vite๋Š” ํ”„๋ž‘์Šค์–ด๋กœ "๋น ๋ฅด๋‹ค(Quick)"๋ฅผ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. ๊ทธ ์ด๋ฆ„๋‹ต๊ฒŒ ๋น ๋ฅด๊ณ  ๊ฐ„๊ฒฐํ•œ ๋ชจ๋˜ ์›น ํ”„๋กœ์ ํŠธ ๊ฐœ๋ฐœ ๊ฒฝํ—˜์— ์ดˆ์ ์„ ๋งž์ถฐ ํƒ„์ƒํ•œ ๋นŒ๋“œ ๋„๊ตฌ์ž…๋‹ˆ๋‹ค.

๊ทธ๋Ÿผ Vite๋Š” ์–ด๋–ป๊ฒŒ ๊ทธ๋ ‡๊ฒŒ ๋น ๋ฅธ ๊ฑธ๊นŒ์š”?

  1. ์šฐ์„  Vite๋Š” Dependencies(ํŒจํ‚ค์ง€)์™€ Source Code(์†Œ์Šค ์ฝ”๋“œ)๋ฅผ ๋‚˜๋ˆ„์–ด ๋ฒˆ๋“ค๋ง ํ•ฉ๋‹ˆ๋‹ค. ์‹ค์ œ ๊ฐœ๋ฐœ์„ ํ•˜๋ฉด์„œ ์†Œ์Šค ์ฝ”๋“œ๋Š” ์ž์ฃผ ๋ฐ”๋€Œ๋Š” ๋ฐ˜๋ฉด ํŒจํ‚ค์ง€๋Š” ๋ฐ”๋€Œ์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— ๋ถ„๋ฆฌํ•˜์—ฌ ํŒจํ‚ค์ง€๋ฅผ ์‚ฌ์ „ ๋ฒˆ๋“ค๋ง ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๊ทธ ์‚ฌ์ „ ๋ฒˆ๋“ค๋ง์— Esbuild๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. Go๋กœ ์ž‘์„ฑ๋œ Esbuild๋Š” Webpack, Parcel๊ณผ ๊ฐ™์€ ๊ธฐ์กด์˜ ๋ฒˆ๋“ค๋Ÿฌ ๋Œ€๋น„ 10~100๋ฐฐ๊นŒ์ง€์˜ ๋น ๋ฅธ ์†๋„๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ๋˜ํ•œ ํ•œ ๋ฒˆ ๋นŒ๋“œํ•œ ๊ฒฐ๊ณผ๋Š” ์บ์‹ฑ์„ ํ•ด๋‘๊ธฐ ๋•Œ๋ฌธ์— ๋‹ค์Œ ๋นŒ๋“œ์—์„œ๋Š” ๋”์šฑ ๋น ๋ฅธ ์†๋„๋ฅผ ์ž๋ž‘ํ•ฉ๋‹ˆ๋‹ค.
  2. ๋˜ํ•œ Vite๋Š” Native ESM์„ ์ด์šฉํ•ด ์†Œ์Šค ์ฝ”๋“œ๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ์ด๋Š” ๋ธŒ๋ผ์šฐ์ €๊ฐ€ ๋ฒˆ๋“ค๋Ÿฌ์˜ ์ž‘์—…์˜ ์ผ๋ถ€๋ฅผ ์ฐจ์ง€ํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•˜๋ฏ€๋กœ, Vite๋Š” ๋ธŒ๋ผ์šฐ์ €๊ฐ€ ์š”์ฒญํ•˜๋Š” ๋Œ€๋กœ ์†Œ์Šค ์ฝ”๋“œ๋ฅผ ๋ณ€ํ™˜ํ•˜๊ณ  ์ œ๊ณตํ•˜๊ธฐ๋งŒ ํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค. ์กฐ๊ฑด๋ถ€ ๋™์  import ์ดํ›„์˜ ์ฝ”๋“œ๋Š” ํ˜„์žฌ ํ™”๋ฉด์—์„œ ์‹ค์ œ๋กœ ์‚ฌ์šฉ๋˜๋Š” ๊ฒฝ์šฐ์—๋งŒ ์ฒ˜๋ฆฌ๋ฉ๋‹ˆ๋‹ค. ์ฆ‰, ์ž๋™์œผ๋กœ routes๋งˆ๋‹ค code splitting์ด ์ผ์–ด๋‚˜ Dynamic import๊ฐ€ ๋ฉ๋‹ˆ๋‹ค.
  3. ๊ทธ๋ฆฌ๊ณ  Vite๋Š” HMR์„ ๋ฒˆ๋“ค๋Ÿฌ๊ฐ€ ์•„๋‹Œ ESM์„ ์‚ฌ์šฉํ•˜์—ฌ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค. ์–ด๋–ค ๋ชจ๋“ˆ์ด ์ˆ˜์ •๋˜๋ฉด Vite๋Š” ๊ทธ์ € ์ˆ˜์ •๋œ ๋ชจ๋“ˆ๊ณผ ๊ด€๋ จ๋œ ๋ถ€๋ถ„๋งŒ ๊ต์ฒดํ•˜๊ณ , ๋ธŒ๋ผ์šฐ์ €์—์„œ ํ•ด๋‹น ๋ชจ๋“ˆ์„ ์š”์ฒญํ•˜๋ฉด ๊ต์ฒด๋œ ๋ชจ๋“ˆ์„ ์ „๋‹ฌํ•ฉ๋‹ˆ๋‹ค. ์ „ ๊ณผ์ •์—์„œ ์™„๋ฒฝํ•˜๊ฒŒ ESM์„ ์ด์šฉํ•˜๊ธฐ์—, ์•ฑ ์‚ฌ์ด์ฆˆ๊ฐ€ ์ปค์ ธ๋„ HMR์„ ํฌํ•จํ•œ ๊ฐฑ์‹  ์‹œ๊ฐ„์—๋Š” ์˜ํ–ฅ์„ ๋ผ์น˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
  4. ๋งˆ์ง€๋ง‰์œผ๋กœ Vite๋Š” HTTP ํ—ค๋”๋ฅผ ํ™œ์šฉํ•˜์—ฌ ์ „์ฒด ํŽ˜์ด์ง€์˜ ๋กœ๋“œ ์†๋„๋ฅผ ๋†’์ž…๋‹ˆ๋‹ค. ํ•„์š”์— ๋”ฐ๋ผ ์†Œ์Šค ์ฝ”๋“œ๋Š” 304 Not Modified๋กœ, ๋””ํŽœ๋˜์‹œ๋Š” Cache-Control: max-age=31536000,immutable์„ ์ด์šฉํ•ด ์บ์‹œ๋ฉ๋‹ˆ๋‹ค. ์ด๋ ‡๊ฒŒ ํ•จ์œผ๋กœ์จ ์š”์ฒญ ํšŸ์ˆ˜๋ฅผ ์ตœ์†Œํ™”ํ•˜์—ฌ ํŽ˜์ด์ง€ ๋กœ๋”ฉ์„ ๋น ๋ฅด๊ฒŒ ๋งŒ๋“ค์–ด ์ค๋‹ˆ๋‹ค.

๋‹ค๋งŒ Vite ๋ฌธ์„œ์—๋„ ๋‚˜์™€์žˆ๋‹ค์‹œํ”ผ Vite๋Š” ํ˜„์žฌ ํ”„๋กœ๋•์…˜ ๋ฒˆ๋“ค๋ง ๊ณผ์ •์—์„œ๋Š” Esbuild๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š๊ณ  Rollup์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ๋ฌผ๋ก  ์†๋„๋กœ๋Š” esbuild๊ฐ€ ๋” ๋น ๋ฅด์ง€๋งŒ, ํ˜„์žฌ๋กœ์„œ๋Š” Rollup์ด ์„ฑ๋Šฅ ๋Œ€ ์œ ์—ฐ์„ฑ ํŠธ๋ ˆ์ด๋“œ์˜คํ”„์—์„œ ๋” ๋‚˜์€ ์„ ํƒ์ด๋ผ๊ณ  ์—ฌ๊ฒผ๊ธฐ์— ๊ทธ๋ ‡๋‹ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ esbuild๋Š” ์ง€๋‚œ ๋ช‡ ๋…„ ๋™์•ˆ ๋งŽ์€ ์ง„์ „์„ ์ด๋ฃจ์—ˆ๊ณ , ํ–ฅํ›„ ํ”„๋กœ๋•์…˜ ๋นŒ๋“œ์—์„œ esbuild๋ฅผ ์‚ฌ์šฉํ•  ๊ฐ€๋Šฅ์„ฑ๋„ ์กด์žฌํ•œ๋‹ค๊ณ  ํ•˜๋‹ˆ, ์™„์ „ํžˆ esbuild๋กœ ๋„˜์–ด๊ฐˆ ๋‚ ์ด ์˜ฌ์ง€ ์กฐ๊ธˆ ๊ธฐ๋Œ€๊ฐ€ ๋˜๋„ค์š”.


Vite๋Š” ๋‘ ๊ฐ€์ง€ ์ปจ์…‰์„ ์ค‘์‹ฌ์œผ๋กœ ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

  • ๊ฐœ๋ฐœ ์‹œ ๋‹ค์–‘ํ•œ ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.
  • ๋ฒˆ๋“ค๋ง ์‹œ Rollup ๊ธฐ๋ฐ˜์˜ ๋‹ค์–‘ํ•œ ๋นŒ๋“œ ์ปค๋งจ๋“œ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋Š” ๋†’์€ ์ˆ˜์ค€์œผ๋กœ ์ตœ์ ํ™”๋œ ์ •์ (Static) ๋ฆฌ์†Œ์Šค๋“ค์„ ๋ฐฐํฌํ•  ์ˆ˜ ์žˆ๊ฒŒ๋” ํ•˜๋ฉฐ, ๋ฏธ๋ฆฌ ์ •์˜๋œ ์„ค์ •(Pre-configured)์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

Vite๋Š” ์ด์™€ ๊ฐ™์ด ์ตœ์ ํ™”๋œ ์„ค์ •์„ ์ œ๊ณตํ•˜์ง€๋งŒ, Plugin API ๋˜๋Š” JavaScript API๋ฅผ ์ด์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Vite ํ”„๋กœ์ ํŠธ ์ƒ์„ฑ

๊ทธ๋Ÿผ ์ด์ œ Vite๊ฐ€ ๋น ๋ฅธ ๊ฒƒ๋„ ์•Œ์•˜๊ณ , ๊ฐ„๋‹จํ•˜๊ฒŒ ์–ด๋–ป๊ฒŒ ๋Œ์•„๊ฐ€๋Š” ์‹œ์Šคํ…œ์ธ์ง€๋ฅผ ํŒŒ์•…ํ•˜๋ฉด ์ข‹์„ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

๋จผ์ € Vite๋กœ ํ”„๋กœ์ ํŠธ๋ฅผ ์ƒ์„ฑํ•ด๋ด…์‹œ๋‹ค. ๊ฐ๊ฐ ์‚ฌ์šฉํ•˜๋Š” ํŒจํ‚ค์ง€ ๋งค๋‹ˆ์ €์— ๋งž๊ฒŒ ์ƒ์„ฑํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค. ์ €๋Š” react + typescript๋ฅผ ์ฃผ๋กœ ์‚ฌ์šฉํ•˜๋‹ˆ react-ts ํ…œํ”Œ๋ฆฟ์„ ์‚ฌ์šฉํ•˜์—ฌ ๋งŒ๋“ค์–ด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

# npm 6.x
npm create vite@latest app --template react-ts

# npm 7+
npm create vite@latest app -- --template react-ts

# yarn
yarn create vite app --template react-ts

# pnpm
pnpm create vite app --template react-ts

Vite๊ฐ€ ์ง€์›ํ•˜๋Š” ํ…œํ”Œ๋ฆฟ์€ vanilla, vanilla-ts, vue, vue-ts, react, react-ts, react-swc, react-swc-ts, preact, preact-ts, lit, lit-ts, svelte, svelte-ts๊ฐ€ ์žˆ์œผ๋‹ˆ ์ƒํ™ฉ์— ๋งž๊ฒŒ ํ…œํ”Œ๋ฆฟ๋งŒ ๋ฐ”๊ฟ” ํ”„๋กœ์ ํŠธ๋ฅผ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.


์ƒ์„ฑํ•˜๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๊ตฌ์กฐ์˜ ํ”„๋กœ์ ํŠธ๊ฐ€ ์ƒ์„ฑ๋ฉ๋‹ˆ๋‹ค.

vite ํ…œํ”Œ๋ฆฟ

react์˜ CRA์™€ ๋น„๊ตํ–ˆ์„ ๋•Œ ํ•œ ๊ฐ€์ง€ ๋ˆˆ์— ๋„๋Š” ์ ์ด ๋ณด์ด์ง€ ์•Š๋‚˜์š”? index.html์ด public ํด๋”๊ฐ€ ์•„๋‹Œ ๋ฃจํŠธ ํด๋”์— ์žˆ์Šต๋‹ˆ๋‹ค. Vite๋Š” ์ด๊ฒŒ ์˜๋„์ ์ธ ์œ„์น˜ ์„ ์ •์ด๋ผ๊ณ  ํ•ฉ๋‹ˆ๋‹ค.
์ด๋Š” ์ถ”๊ฐ€์ ์ธ ๋ฒˆ๋“ค๋ง ๊ณผ์ • ์—†์ด index.html์ด ์•ฑ์˜ ์ง„์ž…์ ์ด ๋˜๊ฒŒ๋” ํ•˜๊ธฐ ์œ„ํ•จ์ž…๋‹ˆ๋‹ค. ๊ทธ๋ž˜์„œ์ธ์ง€ index.html ํŒŒ์ผ ์•ˆ์„ ๋ณด๋ฉด ๊ฐ€์žฅ ๋ฉ”์ธ์ด ๋˜๋Š” tsx ํŒŒ์ผ์ด <script> ํƒœ๊ทธ๋กœ ์‚ฝ์ž…๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. (<script type="module" src="/src/main.tsx"></script>)


์ž. index.html๊ณผ main.tsx๊ฐ€ ์–ด๋–ป๊ฒŒ ์‹คํ–‰๋˜๋Š”์ง€๋ฅผ ์•Œ์•˜๊ฒ ๋‹ค, ์ด์ œ๋Š” package.json์„ ๋œฏ์–ด๋ณผ ์ฐจ๋ก€์ž…๋‹ˆ๋‹ค.

๊ฐ€์žฅ ๋จผ์ € scripts ๋ถ€๋ถ„์„ ๋ณด๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ ํ˜€์žˆ์Šต๋‹ˆ๋‹ค.

"scripts": {
  "dev": "vite",
  "build": "tsc && vite build",
  "lint": "eslint src --ext ts,tsx --report-unused-disable-directives --max-warnings 0",
  "preview": "vite preview"
},

๊ทผ๋ฐ ๋นŒ๋“œ ์‹œ์— tsc๋ฅผ ์‚ฌ์šฉํ•˜๋„ค์š”? ์™ ์ง€ ์˜ˆ์ „ ์ œ ๊ธ€์ด ์ƒ๊ฐ๋‚˜๋„ค์š” ๐Ÿ˜Ž


์ด์™ธ์— ์ปค๋งจ๋“œ ๋ผ์ธ์—์„œ ์˜ต์…˜์œผ๋กœ ๋ถ™์ผ ์ˆ˜ ์žˆ๋Š” ๊ฒƒ๋“ค์ด ์—ฌ๋Ÿฟ ์กด์žฌํ•ฉ๋‹ˆ๋‹ค. ์ด๋Š” ๊ณต์‹ ๋ฌธ์„œ - CLI ๋ถ€๋ถ„์— ์ž˜ ์ •๋ฆฌ๊ฐ€ ๋˜์–ด์žˆ์œผ๋‹ˆ, ์ด ๋ถ€๋ถ„์„ ์ฐธ๊ณ ํ•˜์—ฌ ์šฉ๋„์— ๋งž๊ฒŒ ์ปค์Šคํ…€ํ•˜์—ฌ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์„ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

TypeScript ์ง€์›?

๋‹น์—ฐํ•˜๊ฒŒ๋„ Vite๋Š” ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ๋ฅผ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ํƒ€์ž…์— ๋Œ€ํ•œ ๊ฒ€์‚ฌ๋Š” IDE ์ž์ฒด์—์„œ ํ•˜๋Š” ๊ฒƒ๊ณผ build ๊ณผ์ •์—์„œ๋งŒ ์ง„ํ–‰ํ•ฉ๋‹ˆ๋‹ค.
(์œ„์˜ scripts์—์„œ build ์‹œ tsc๋ฅผ ๋จผ์ € ์ˆ˜ํ–‰ํ•˜๋Š” ๋ฐ, ์ด ๋ถ€๋ถ„์ด ํƒ€์ž… ๊ฒ€์‚ฌ์— ํ•ด๋‹นํ•ฉ๋‹ˆ๋‹ค.)
์ผ๋ฐ˜์ ์œผ๋กœ ๊ฐœ๋ฐœ ์‹œ์—๋Š” .ts ํŒŒ์ผ์— ๋Œ€ํ•ด์„œ ํŠธ๋žœ์ŠคํŒŒ์ผ๋ง๋งŒ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค.


์™œ ์ด๋ ‡๊ฒŒ ํ•˜๋Š” ๊ฑธ๊นŒ์š”? ์ด๋Š” Vite์˜ ์žฅ์ ์ธ "๋น ๋ฅธ ์†๋„"์™€ ๊ด€๋ จ์ด ์žˆ์Šต๋‹ˆ๋‹ค.
๋งŒ์•ฝ ๊ฐœ๋ฐœ ์‹œ์—๋„ ๊ณ„์† ํƒ€์ž… ๊ฒ€์‚ฌ๋ฅผ ํ•œ๋‹ค๋ฉด ์ „์ฒด ๋ชจ๋“ˆ ๊ทธ๋ž˜ํ”„์— ๋Œ€ํ•œ ํƒ์ƒ‰์ด ํ•„์š”ํ•˜๋ฏ€๋กœ ์ด ์žฅ์ ์ด ํ‡ด์ƒ‰๋  ์ˆ˜ ๋ฐ–์— ์—†๊ฒ ์ฃ .
๋•Œ๋ฌธ์— Vite์—์„œ๋Š” ํƒ€์ž… ๊ฒ€์‚ฌ๋Š” ๋นŒ๋“œ ์‹œ ์ˆ˜ํ–‰ํ•˜๋„๋ก ๋ถ„๋ฆฌํ–ˆ์Šต๋‹ˆ๋‹ค. (๋‹น์—ฐํžˆ ์ด๋Š” ๊ธฐ๋ณธ ์„ค์ •์ด๋ฏ€๋กœ ํƒ€์ž… ๊ฒ€์‚ฌ๋ฅผ ํ•˜๋„๋ก ์„ค์ •ํ•˜๋Š” ๋ฐฉ๋ฒ•๋„ ์žˆ์Šต๋‹ˆ๋‹ค.)


Vite์—์„œ๋Š” ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ ์ปดํŒŒ์ผ ์‹œ esbuild๋ฅผ ์ด์šฉํ•ฉ๋‹ˆ๋‹ค. ์ด๋กœ ์ธํ•ด ts ์ฝ”๋“œ๋ฅผ js ์ฝ”๋“œ๋กœ ๋ณ€ํ™˜์ด tsc ๋Œ€๋น„ ์•ฝ 20~30๋ฐฐ ์ •๋„ ๋น ๋ฅด๊ฒŒ ์ด๋ฃจ์–ด์ง‘๋‹ˆ๋‹ค.

๊ทธ๋Ÿผ Webpack๊ณผ Vite ์ค‘์—์„œ ๋ญ˜ ์„ ํƒํ• ๋ž˜?

์ €๋Š” ๋ฒˆ๋“ค๋Ÿฌ๋ฅผ ์„ ํƒํ•˜๋Š” ๋ฐ ๋นŒ๋“œ ์†๋„๋„ ํฐ ๋น„์ค‘์„ ์ฐจ์ง€ํ•˜๋Š” ์š”์†Œ๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.


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


๊ทธ๋ž˜์„œ ๋น ๋ฅธ ์†๋„์™€ ์‰ฌ์šด ์„ค์ •์ด ์ž๋ž‘์ด๋ผ๋˜ Vite์— ๊ด€์‹ฌ์ด ์ƒ๊ฒผ๊ณ , ๋จผ์ € ์กฐ๊ทธ๋งŒ ํ† ์ด ํ”„๋กœ์ ํŠธ์— Vite๋ฅผ ์‚ฌ์šฉํ•ด๋ณด๋ฉฐ ํ™•์‹คํžˆ ๋นŒ๋“œ ์†๋„๊ฐ€ ๋น ๋ฆ„์„ ๋งŽ์ด ์ฒด๊ฐํ–ˆ์Šต๋‹ˆ๋‹ค. (์˜ˆ์ „์— ๊ฐœ๋ฐœ ๋ชจ๋“œ์—์„œ webpack์„ ์‚ฌ์šฉํ•  ๋•Œ๋Š” ์„œ๋ฒ„๋ฅผ ์‹œ์ž‘ํ•˜๊ณ  ์ ์–ด๋„ 2์ดˆ ์ด์ƒ์€ ๊ธฐ๋‹ค๋ ค์•ผ ํ™”๋ฉด์ด ๋–ด๋Š”๋ฐ, vite๋ฅผ ์‚ฌ์šฉํ–ˆ๋”๋‹ˆ 1์ดˆ๋„ ์•ˆ๋ผ์„œ ํ™”๋ฉด์ด ๋œจ๋Š” ๊ธฐํ˜„์ƒ์„ ๋ณผ ์ˆ˜ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค. ์ •๋ง ๊ทธ๋•Œ์˜ ์‹ฌ๊ฒฝ์€...)


์‚ฌ์‹ค Webpack vs Vite๋ผ๋Š” ๋น„๊ต ์ž์ฒด๋„ ์–ด๋–ป๊ฒŒ ๋ณด๋ฉด ํ”„๋กœ์ ํŠธ์˜ ์ฃผ์ œ๋‚˜ ๋ชฉ์ ์— ๋”ฐ๋ผ ๋ฒ ์ŠคํŠธ๋Š” ๋‹ค๋ฅผ ๊ฒƒ์ด๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ์•ˆ์ •์„ฑ๊ณผ ํ™•์žฅ์„ฑ์„ ์ตœ์šฐ์„ ์œผ๋กœ ์—ฌ๊ธด๋‹ค๋ฉด Webpack์ด ์—ฌ์ „ํžˆ ์ข‹์€ ์„ ํƒ์ง€์ผ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ๊ทธ๋ ‡์ง€๋งŒ Vite๋„ ๊พธ์ค€ํžˆ ์—…๋ฐ์ดํŠธ๋ฅผ ํ•˜๋ฉฐ ๋งŽ์ด ์•ˆ์ •์ ์œผ๋กœ ๋ฐ”๋€Œ์—ˆ๊ณ  ์ง€์›ํ•˜๋Š” ํ”Œ๋Ÿฌ๊ทธ์ธ๋„ ๋งŽ์ด ๋Š˜์–ด๋‚ฌ์œผ๋‹ˆ, ๋งŒ์•ฝ ๋ณธ์ธ์ด ์›ํ•˜๋Š” ๊ธฐ๋Šฅ์„ Vite์—์„œ ํ”Œ๋Ÿฌ๊ทธ์ธ ๋“ฑ์œผ๋กœ๋„ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ๋„๋ก ์ง€์›์„ ํ•ด์ฃผ๊ณ  ์žˆ๋‹ค๋ฉด Vite๊ฐ€ ์•„์ฃผ ๋งค๋ ฅ์ ์ธ ์„ ํƒ์ง€๊ฐ€ ๋  ์ˆ˜ ์žˆ๊ฒ ์ฃ .