# [[Vite Build Tool|Vite Build Tool]] ## ๐Ÿ“Œ Brief ์ž„๋ฌด Vite๋Š” ํ˜„๋Œ€ ํ”„๋ก ํŠธ์—”๋“œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜(์ฃผ๋กœ React)์„ ์œ„ํ•œ ํ‘œ์ค€ ๋นŒ๋“œ ๋„๊ตฌ๋กœ, ๊ธฐ์กด Webpack ๋ฐ Create React App(CRA)์„ ๋Œ€์ฒดํ•˜๋ฉฐ ๋น ๋ฅด๊ฒŒ ์ž๋ฆฌ ์žก์•˜์Šต๋‹ˆ๋‹ค [1, 2]. ์ด ๋„๊ตฌ๋Š” ๊ฐœ๋ฐœ ํ™˜๊ฒฝ์—์„œ๋Š” ๋ธŒ๋ผ์šฐ์ €์˜ ๋„ค์ดํ‹ฐ๋ธŒ ES ๋ชจ๋“ˆ(ESM)์„ ํ™œ์šฉํ•ด ์ฆ‰๊ฐ์ ์ธ ์„œ๋ฒ„ ์‹œ์ž‘๊ณผ ์ดˆ๊ณ ์† HMR(Hot Module Replacement)์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค [2-4]. ํ”„๋กœ๋•์…˜ ๋ฐฐํฌ ์‹œ์—๋Š” ๋‚ด๋ถ€์ ์œผ๋กœ Rollup์„ ์‚ฌ์šฉํ•˜์—ฌ ์ฝ”๋“œ ์Šคํ”Œ๋ฆฌํŒ…๊ณผ ํŠธ๋ฆฌ ์‰์ดํ‚น์ด ์ ์šฉ๋œ ๊ณ ๋„๋กœ ์ตœ์ ํ™”๋œ ๋ฒˆ๋“ค์„ ์ƒ์„ฑํ•˜๋Š” ํ•˜์ด๋ธŒ๋ฆฌ๋“œ ์•„ํ‚คํ…์ฒ˜๋ฅผ ํŠน์ง•์œผ๋กœ ํ•ฉ๋‹ˆ๋‹ค [5, 6]. ## ๐Ÿ“– Core Content * **ํ•˜์ด๋ธŒ๋ฆฌ๋“œ ์•„ํ‚คํ…์ฒ˜ (Hybrid Architecture)** * **๊ฐœ๋ฐœ ํ™˜๊ฒฝ:** ์ฝ”๋“œ๋ฅผ ์‚ฌ์ „์— ์ „์ฒด ๋ฒˆ๋“ค๋งํ•˜์ง€ ์•Š๊ณ  ๋ธŒ๋ผ์šฐ์ €์— ๋„ค์ดํ‹ฐ๋ธŒ ES ๋ชจ๋“ˆ(ESM)๋กœ ์ง์ ‘ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ํ•„์š”ํ•œ ํŒŒ์ผ๋งŒ ๋กœ๋“œ๋˜๋ฏ€๋กœ ํ”„๋กœ์ ํŠธ ํฌ๊ธฐ๊ฐ€ ์ปค์ ธ๋„ ๊ฐœ๋ฐœ ์„œ๋ฒ„๊ฐ€ ์ฆ‰๊ฐ์ ์œผ๋กœ ๋ฐ˜์‘ํ•ฉ๋‹ˆ๋‹ค [2-4]. * **ํ”„๋กœ๋•์…˜ ํ™˜๊ฒฝ:** ๋ฐฐํฌ ์‹œ์—๋Š” Rollup์„ ์‚ฌ์šฉํ•˜์—ฌ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๋ฒˆ๋“ค๋งํ•˜๋ฉฐ, ์ž๋™ ์ฝ”๋“œ ์Šคํ”Œ๋ฆฌํŒ… ๋ฐ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” ์ฝ”๋“œ๋ฅผ ์ œ๊ฑฐํ•˜๋Š” ํŠธ๋ฆฌ ์‰์ดํ‚น(Tree-shaking)์„ ํ†ตํ•ด ์ตœ์ ํ™”๋œ ์ •์  ์—์…‹์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค [5, 6]. * **์ดˆ๊ณ ์† ์ปดํŒŒ์ผ ๋ฐ ์‚ฌ์ „ ๋ฒˆ๋“ค๋ง (Fast Compilation & Pre-bundling)** * Vite๋Š” esbuild๋‚˜ ์ตœ์‹  Rust ๊ธฐ๋ฐ˜ ํŠธ๋žœ์Šคํฌ๋จธ์ธ SWC(Speedy Web Compiler)๋ฅผ ํ™œ์šฉํ•˜์—ฌ JSX ๋ฐ TypeScript ํŒŒ์ผ์„ ์‚ฌ์‹ค์ƒ ์ฆ‰์‹œ ์ปดํŒŒ์ผํ•ฉ๋‹ˆ๋‹ค [4, 7]. ๊ธฐ์กด Babel์„ SWC๋กœ ๋Œ€์ฒดํ•˜๋ฉด ํ•ซ ๋ชจ๋“ˆ ๋ฆฌ๋กœ๋“œ ์‹œ๊ฐ„์ด ํฌ๊ฒŒ ๋‹จ์ถ•๋ฉ๋‹ˆ๋‹ค [8]. * ๊ฐœ๋ฐœ ์ค‘ ์ƒˆ๋กœ๊ณ ์นจ ์†๋„๋ฅผ ์ตœ์ ํ™”ํ•˜๊ธฐ ์œ„ํ•ด ์ข…์†์„ฑ์„ ์‚ฌ์ „ ๋ฒˆ๋“ค๋ง(Pre-bundling, `optimizeDeps`)ํ•ฉ๋‹ˆ๋‹ค [8]. * **์„ค์ • ๋ฐ ํ”Œ๋Ÿฌ๊ทธ์ธ ์ƒํƒœ๊ณ„ (Configuration & Plugins)** * `vite.config.js`๋ฅผ ํ†ตํ•ด ๊ฒฝ๋กœ ๋ณ„์นญ(Path Aliases), CORS ๋ฌธ์ œ๋ฅผ ๋ฐฉ์ง€ํ•˜๋Š” ๊ฐœ๋ฐœ ์„œ๋ฒ„ ํ”„๋ก์‹œ, `VITE_` ์ ‘๋‘์‚ฌ๊ฐ€ ๋ถ™์€ ํ™˜๊ฒฝ ๋ณ€์ˆ˜ ๋“ฑ์„ ์œ ์—ฐํ•˜๊ฒŒ ์„ค์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค [7, 9, 10]. * SVG๋ฅผ React ์ปดํฌ๋„ŒํŠธ๋กœ ๊ฐ€์ ธ์˜ค๊ธฐ ์œ„ํ•œ `vite-plugin-svgr`, ์˜คํ”„๋ผ์ธ PWA ์ง€์›์„ ์œ„ํ•œ `vite-plugin-pwa`, ๋ฒˆ๋“ค ํฌ๊ธฐ๋ฅผ ์‹œ๊ฐ์ ์œผ๋กœ ๋ถ„์„ํ•˜๋Š” `rollup-plugin-visualizer` ๋“ฑ ๊ฐ•๋ ฅํ•œ ํ”Œ๋Ÿฌ๊ทธ์ธ ์ƒํƒœ๊ณ„๋ฅผ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค [11-13]. * **๋ฒˆ๋“ค ์‚ฌ์ด์ฆˆ ์ตœ์ ํ™” (Bundle Optimization)** * ๊ธฐ๋ณธ์ ์œผ๋กœ Vite๋Š” ์•ฑ ์ฝ”๋“œ์™€ ๋ชจ๋“  ์ข…์†์„ฑ(node_modules)์„ ํ•˜๋‚˜์˜ `index.js`์— ๋‹ด์•„ ๋นŒ๋“œํ•ฉ๋‹ˆ๋‹ค. ์ด๋ฅผ ๋ฐฉ์ง€ํ•˜๊ธฐ ์œ„ํ•ด `vite.config.ts`์˜ Rollup ์˜ต์…˜์—์„œ `manualChunks`๋ฅผ ์„ค์ •ํ•˜์—ฌ React ์ฝ”์–ด ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ๋“ฑ ๋ฌด๊ฑฐ์šด ๋ฒค๋”๋ฅผ ๋ถ„๋ฆฌํ•˜๊ณ  ๋ธŒ๋ผ์šฐ์ € ์บ์‹ฑ ํšจ์œจ์„ ๋†’์ž…๋‹ˆ๋‹ค [6, 14, 15]. * `React.lazy()`์™€ ``๋ฅผ ๊ฒฐํ•ฉํ•œ ๋ผ์šฐํŠธ ๋ ˆ๋ฒจ ๋™์  ์ž„ํฌํŠธ๋ฅผ ํ†ตํ•ด ์ดˆ๊ธฐ ๋ฉ”์ธ ๋ฒˆ๋“ค ํฌ๊ธฐ๋ฅผ ๊ทน์ ์œผ๋กœ ์ค„์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค [11, 14, 15]. ## โš–๏ธ Trade-offs & Caveats * **๋Œ€ํ˜• ์ฒญํฌ ๊ฒฝ๊ณ  ๋ฐ ์ดˆ๊ธฐ ๋ฒˆ๋“ค ๋น„๋Œ€ํ™” (Large Chunks Warning):** Vite๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ ๋ชจ๋“  ์ข…์†์„ฑ์„ ๋‹จ์ผ ํŒŒ์ผ๋กœ ๋นŒ๋“œํ•˜๊ธฐ ๋•Œ๋ฌธ์—, ์ˆ˜๋™์œผ๋กœ ์ฝ”๋“œ ์Šคํ”Œ๋ฆฌํŒ…์„ ํ•˜์ง€ ์•Š์œผ๋ฉด ํ”„๋กœ๋•์…˜ ๋นŒ๋“œ ์‹œ "500kB ์ดˆ๊ณผ" ๊ฒฝ๊ณ ๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋Š” ๋‹ค์šด๋กœ๋“œ ์‹œ๊ฐ„์„ ์ง€์—ฐ์‹œํ‚ค๊ณ  ๋‚ฎ์€ ์„ฑ๋Šฅ์˜ ๋ชจ๋ฐ”์ผ ๊ธฐ๊ธฐ์—์„œ ํŒŒ์‹ฑ ๋ฐ ์ปดํŒŒ์ผ์— ๋ฌด๋ฆฌ๋ฅผ ์ฃผ์–ด FCP, LCP, INP์™€ ๊ฐ™์€ Core Web Vitals ์ง€ํ‘œ๋ฅผ ์•…ํ™”์‹œํ‚ฌ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค [14, 16, 17]. * **๊ฐœ๋ฐœ์ž ๋„๊ตฌ ์บ์‹ฑ ์˜์กด์„ฑ:** Vite๋Š” ๋ชจ๋“ˆ ๋กœ๋”ฉ ์„ฑ๋Šฅ์„ ์œ„ํ•ด ๋ธŒ๋ผ์šฐ์ €์˜ ์บ์‹ฑ์— ํฌ๊ฒŒ ์˜์กดํ•ฉ๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ๊ฐœ๋ฐœ ์ค‘ ๋ธŒ๋ผ์šฐ์ € ๊ฐœ๋ฐœ์ž ๋„๊ตฌ์—์„œ "์บ์‹œ ์‚ฌ์šฉ ์•ˆ ํ•จ(Disable cache)"์„ ์„ค์ •ํ•˜๋ฉด ๊ฐœ๋ฐœ ์„œ๋ฒ„๊ฐ€ ๋А๋ ค์ง€๋Š” ๋ถ€์ž‘์šฉ์ด ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค [18]. * **ํ”Œ๋Ÿฌ๊ทธ์ธ ๋‚จ์šฉ์œผ๋กœ ์ธํ•œ ์„ฑ๋Šฅ ์ €ํ•˜:** ๊ณผ๋„ํ•œ ํ”Œ๋Ÿฌ๊ทธ์ธ ์‚ฌ์šฉ์€ ๊ฐœ๋ฐœ ์„œ๋ฒ„์˜ ์†๋„๋ฅผ ์ €ํ•˜์‹œํ‚ฌ ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ, ๊ตฌ์„ฑ์„ ์ตœ์†Œํ™”ํ•˜๊ณ  ํ•„์š”ํ•œ ํ”Œ๋Ÿฌ๊ทธ์ธ๋งŒ ์œ ์ง€ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค [18]. * **์‚ฌ์ „ ๋ฒˆ๋“ค๋ง ๊ด€๋ฆฌ ํ•„์š”์„ฑ:** ๊ทœ๋ชจ๊ฐ€ ํฌ๊ฑฐ๋‚˜ ํŠน์ดํ•œ ์™ธ๋ถ€ ์ข…์†์„ฑ์˜ ๊ฒฝ์šฐ, `optimizeDeps` ์„ค์ •์„ ์ˆ˜๋™์œผ๋กœ ์ œ์–ดํ•˜์ง€ ์•Š์œผ๋ฉด ๊ฐœ๋ฐœ ํ™˜๊ฒฝ์—์„œ ์‚ฌ์ „ ๋ฒˆ๋“ค๋ง์œผ๋กœ ์ธํ•œ ์†๋„ ์ €ํ•˜๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค [8, 11]. ## ๐Ÿ”— Knowledge Connections ### Related Concepts #### [์•„ํ‚คํ…์ฒ˜/๊ธฐ๋ฐ˜ ๊ธฐ์ˆ ] - Native ES Modules (ESM) - ์—ฐ๊ฒฐ ์ด์œ : Vite๊ฐ€ ๊ฐœ๋ฐœ ๋‹จ๊ณ„์—์„œ ๋น ๋ฅธ ๊ตฌ๋™ ์†๋„๋ฅผ ๋‹ฌ์„ฑํ•˜๊ธฐ ์œ„ํ•ด ํ™œ์šฉํ•˜๋Š” ๋ธŒ๋ผ์šฐ์ €์˜ ๊ธฐ๋ณธ ๋ชจ๋“ˆ ์‹œ์Šคํ…œ์ž…๋‹ˆ๋‹ค [2, 4]. - ์ด ๊ฐœ๋…์„ ํ†ตํ•ด ๋” ๊นŠ๊ฒŒ ์ดํ•ดํ•  ์ˆ˜ ์žˆ๋Š” ๋ถ€๋ถ„: ๊ณผ๊ฑฐ ๋„๊ตฌ(Webpack)์˜ ๋ฌด๊ฑฐ์šด ์‚ฌ์ „ ๋ฒˆ๋“ค๋ง ๋ฐฉ์‹๊ณผ ๋Œ€๋น„๋˜๋Š” Vite์˜ '์š”์ฒญ ์‹œ ์ œ๊ณต(On-demand serving)' ๋ฉ”์ปค๋‹ˆ์ฆ˜์˜ ์›๋ฆฌ. - [[Rollup|Rollup]] - ์—ฐ๊ฒฐ ์ด์œ : Vite์˜ ํ”„๋กœ๋•์…˜ ๋นŒ๋“œ๋ฅผ ๋‹ด๋‹นํ•˜๋Š” ๋‚ด๋ถ€ ๋ฒˆ๋“ค๋Ÿฌ์ž…๋‹ˆ๋‹ค [5, 6]. - ์ด ๊ฐœ๋…์„ ํ†ตํ•ด ๋” ๊นŠ๊ฒŒ ์ดํ•ดํ•  ์ˆ˜ ์žˆ๋Š” ๋ถ€๋ถ„: ๋ฐฐํฌ ํ™˜๊ฒฝ์—์„œ ์–ด๋–ป๊ฒŒ `manualChunks`๋ฅผ ํ™œ์šฉํ•˜์—ฌ ๋ฒˆ๋“ค์„ ๋ถ„ํ• ํ•˜๊ณ , ํŠธ๋ฆฌ ์‰์ดํ‚น์„ ํ†ตํ•ด ์ตœ์ ํ™”๋œ ๊ฒฐ๊ณผ๋ฌผ์„ ๋„์ถœํ•˜๋Š”์ง€ ๊ทธ ๊ณผ์ • [10, 16]. - SWC - ์—ฐ๊ฒฐ ์ด์œ : ๊ธฐ์กด์˜ Babel์„ ๋Œ€์ฒดํ•˜์—ฌ JSX์™€ TypeScript ์ปดํŒŒ์ผ์„ ์—„์ฒญ๋‚˜๊ฒŒ ๋น ๋ฅธ ์†๋„๋กœ ์ฒ˜๋ฆฌํ•˜๋Š” Rust ๊ธฐ๋ฐ˜ ํŠธ๋žœ์Šคํฌ๋จธ์ž…๋‹ˆ๋‹ค [4, 7, 8]. - ์ด ๊ฐœ๋…์„ ํ†ตํ•ด ๋” ๊นŠ๊ฒŒ ์ดํ•ดํ•  ์ˆ˜ ์žˆ๋Š” ๋ถ€๋ถ„: Vite ํ™˜๊ฒฝ์—์„œ React ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ํ•ซ ๋ฆฌ๋กœ๋“œ์™€ ๋นŒ๋“œ ํผํฌ๋จผ์Šค๋ฅผ ํ•œ ์ฐจ์› ๋Œ์–ด์˜ฌ๋ฆฌ๋Š” ์ปดํŒŒ์ผ๋Ÿฌ์˜ ์—ญํ• . #### [์ตœ์ ํ™” ๊ธฐ๋ฒ•] - Code Splitting & manualChunks - ์—ฐ๊ฒฐ ์ด์œ : 500kB ์ด์ƒ์˜ ๊ฑฐ๋Œ€ํ•œ ๋ฉ”์ธ ๋ฒˆ๋“ค ๊ฒฝ๊ณ  ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด Vite/Rollup ํ™˜๊ฒฝ์—์„œ ๋ฒค๋” ์ฝ”๋“œ์™€ ์•ฑ ์ฝ”๋“œ๋ฅผ ๋‚˜๋ˆ„๋Š” ํ•ต์‹ฌ ๊ธฐ๋ฒ•์ž…๋‹ˆ๋‹ค [6, 14, 15]. - ์ด ๊ฐœ๋…์„ ํ†ตํ•ด ๋” ๊นŠ๊ฒŒ ์ดํ•ดํ•  ์ˆ˜ ์žˆ๋Š” ๋ถ€๋ถ„: ๋ธŒ๋ผ์šฐ์ € ๋ณ‘๋ ฌ ๋‹ค์šด๋กœ๋“œ์™€ ํšจ์œจ์ ์ธ ์บ์‹œ ๋ฌดํšจํ™” ์ „๋žต, ์ดˆ๊ธฐ ํŽ˜์ด๋กœ๋“œ ์ตœ์†Œํ™” ๋ฐฉ๋ฒ• [17, 19]. ### Deeper Research Questions - Vite์˜ ๋„ค์ดํ‹ฐ๋ธŒ ESM ๊ธฐ๋ฐ˜ ๊ฐœ๋ฐœ ํ™˜๊ฒฝ๊ณผ Rollup ๊ธฐ๋ฐ˜ ํ”„๋กœ๋•์…˜ ํ™˜๊ฒฝ ์‚ฌ์ด์˜ ์ฐจ์ด๋กœ ์ธํ•ด, ๋Ÿฐํƒ€์ž„ ๋˜๋Š” ๋นŒ๋“œ ํƒ€์ž„์— ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋Š” ํ˜ธํ™˜์„ฑ ๋ฌธ์ œ๋‚˜ ์˜ˆ์™ธ ์ผ€์ด์Šค๋Š” ๋ฌด์—‡์ธ๊ฐ€? - ๋Œ€๊ทœ๋ชจ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ `optimizeDeps`๋ฅผ ํ†ตํ•œ ์‚ฌ์ „ ๋ฒˆ๋“ค๋ง ๋ฉ”์ปค๋‹ˆ์ฆ˜ ์ตœ์ ํ™”๋ฅผ ์œ„ํ•ด ๊ตฌ์ฒด์ ์œผ๋กœ ์–ด๋–ค ๊ธฐ์ค€์„ ๊ฐ€์ง€๊ณ  ์ข…์†์„ฑ์„ ๋ถ„๋ฆฌ/ํฌํ•จํ•ด์•ผ ํ•˜๋Š”๊ฐ€? - `@vitejs/plugin-react-swc` ์‚ฌ์šฉ ์‹œ, ๊ธฐ์กด Babel ์ƒํƒœ๊ณ„์˜ ์ปค์Šคํ…€ ํ”Œ๋Ÿฌ๊ทธ์ธ๋“ค์„ ์–ด๋–ป๊ฒŒ ์ด๊ด€ํ•˜๊ฑฐ๋‚˜ ๋Œ€์ฒดํ•ด์•ผ ํ•˜๋Š”๊ฐ€? - `manualChunks`๋ฅผ ์„ธ๋ฐ€ํ•˜๊ฒŒ ์„ค์ •ํ•  ๋•Œ ๋ฒค๋” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์˜ ์ค‘๋ณต ํฌํ•จ์„ ๋ง‰๊ณ  ๊ฐ€์žฅ ์ด์ƒ์ ์ธ ์ฒญํฌ ํฌ๊ธฐ๋ฅผ ์œ ์ง€ํ•˜๋Š” ์ „๋žต์€ ๋ฌด์—‡์ธ๊ฐ€? - Vite ํ™˜๊ฒฝ์—์„œ ๋ผ์šฐํŠธ ๋ ˆ๋ฒจ ์ง€์—ฐ ๋กœ๋”ฉ(`React.lazy`) ์ ์šฉ ์‹œ ๋ฐœ์ƒํ•˜๋Š” ์›Œํ„ฐํด(Waterfall) ๋„คํŠธ์›Œํฌ ์š”์ฒญ ๋ฌธ์ œ๋ฅผ ๋ฐฉ์ง€ํ•˜๊ธฐ ์œ„ํ•ด `preload` ๋˜๋Š” `prefetch` ํžŒํŠธ๋ฅผ ์–ด๋–ป๊ฒŒ ๊ฒฐํ•ฉํ•  ์ˆ˜ ์žˆ๋Š”๊ฐ€? ### Practical Application Contexts - **Implementation:** `npm create vite@latest`๋ฅผ ์‚ฌ์šฉํ•ด ๋ถˆํ•„์š”ํ•œ ์„ค์ • ์—†๋Š” ๊ฐ€๋ฒผ์šด ์ดˆ๊ธฐ ๊ตฌ์กฐ๋ฅผ ์ƒ์„ฑํ•˜๊ณ , `vite.config.js`์— `@vitejs/plugin-react-swc`์™€ ๊ฐ™์€ ํ”Œ๋Ÿฌ๊ทธ์ธ, ๊ฒฝ๋กœ ๋ณ„์นญ(`@/components` ๋“ฑ), ๋ฐฑ์—”๋“œ API ์—ฐ๋™์„ ์œ„ํ•œ proxy ์„ค์ •์„ ๊ตฌํ˜„ํ•ฉ๋‹ˆ๋‹ค [3, 7, 9, 10]. - **System Design:** ํ”„๋ก ํŠธ์—”๋“œ ์‹œ์Šคํ…œ ์„ค๊ณ„ ์‹œ ๊ฐœ๋ฐœ ํ™˜๊ฒฝ(๋น ๋ฅธ ํ”ผ๋“œ๋ฐฑ ๋ฃจํ”„ ๋ณด์žฅ)๊ณผ ๋ฐฐํฌ ํ™˜๊ฒฝ(๊ณ ๋„์˜ ์••์ถ• ๋ฐ ๋ณ‘๋ ฌ ๋กœ๋“œ๋ฅผ ์œ„ํ•œ ๋ชจ๋“ˆํ™” ๋ณด์žฅ)์— ๋‹ค๋ฅธ ์ „๋žต์„ ์ทจํ•˜๋Š” Vite์˜ ํ•˜์ด๋ธŒ๋ฆฌ๋“œ ์ฒ ํ•™์„ ์•„ํ‚คํ…์ฒ˜์— ๋ฐ˜์˜ํ•ฉ๋‹ˆ๋‹ค [5]. - **Operation / Maintenance:** CI/CD ํŒŒ์ดํ”„๋ผ์ธ์ด๋‚˜ ๋กœ์ปฌ ๋นŒ๋“œ ํ›„ `rollup-plugin-visualizer` ํ”Œ๋Ÿฌ๊ทธ์ธ์„ ํ™œ์šฉํ•˜์—ฌ ์–ด๋–ค ํŒจํ‚ค์ง€๊ฐ€ ๋ฉ”์ธ ๋ฒˆ๋“ค ์šฉ๋Ÿ‰์„ ์ฐจ์ง€ํ•˜๋Š”์ง€ ์‹œ๊ฐ์  ํŠธ๋ฆฌ๋งต์œผ๋กœ ์ •๊ธฐ ์ ๊ฒ€ํ•˜๊ณ  ์ตœ์ ํ™”ํ•ฉ๋‹ˆ๋‹ค [11, 13, 18]. - **Learning Path:** ๋ชจ๋“ˆ ๋ฒˆ๋“ค๋Ÿฌ์˜ ๋ฐœ์ „ ๊ณผ์ •(Webpack -> ES Modules ๋„ค์ดํ‹ฐ๋ธŒ ๋„์ž… -> Vite)์„ ํ•™์Šตํ•œ ํ›„, ๋นŒ๋“œ ๋„๊ตฌ ์ฐจ์›์˜ ์ตœ์ ํ™”(`manualChunks`)์™€ React ํ”„๋ ˆ์ž„์›Œํฌ ์ฐจ์›์˜ ์ตœ์ ํ™”(`React.lazy`)๊ฐ€ ๊ฒฐํ•ฉ๋˜์—ˆ์„ ๋•Œ์˜ ์‹œ๋„ˆ์ง€๋ฅผ ์ดํ•ดํ•˜๋Š” ๋ฐฉํ–ฅ์œผ๋กœ ํ•™์Šต์„ ์ง„ํ–‰ํ•ฉ๋‹ˆ๋‹ค [2, 6, 15]. - **My Project Relevance:** Vite ๋นŒ๋“œ ์‹œ "Some chunks are larger than 500 kB" ๊ฒฝ๊ณ ๊ฐ€ ๋ฐœ์ƒํ–ˆ์„ ๋•Œ ๋‹นํ™ฉํ•˜์ง€ ์•Š๊ณ , ์ž์ฃผ ๋ณ€๊ฒฝ๋˜์ง€ ์•Š๋Š” ๋ฒค๋” ์ฝ”๋“œ(React ์ฝ”์–ด, ์ฐจํŠธ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ๋“ฑ)๋ฅผ ๋ถ„๋ฆฌํ•˜๊ณ  ๋ผ์šฐํ„ฐ ๋ ˆ๋ฒจ์—์„œ ์ง€์—ฐ ๋กœ๋”ฉ์„ ๋„์ž…ํ•˜์—ฌ ๋‹ค์šด๋กœ๋“œ ์†๋„ ๋ฐ FCP, LCP๋ฅผ ๊ฐœ์„ ํ•˜๋Š” ๋ฐ ์ง์ ‘์ ์œผ๋กœ ์ ์šฉํ•ฉ๋‹ˆ๋‹ค [14-16]. ### Adjacent Topics - Webpack - ํ™•์žฅ ๋ฐฉํ–ฅ: Vite๊ฐ€ ๋“ฑ์žฅํ•˜๊ธฐ ์ „ ์—…๊ณ„ ํ‘œ์ค€์ด์—ˆ์œผ๋‚˜ ์‹œ์ž‘ ์ „ ์ „์ฒด ๋ฒˆ๋“ค๋ง ๊ณผ์ •์œผ๋กœ ์ธํ•ด ๋ฌด๊ฑฐ์šด ๊ตฌ์กฐ๋ฅผ ๊ฐ€์ง„ Webpack์˜ ํ•œ๊ณ„์™€ Vite์™€์˜ ์•„ํ‚คํ…์ฒ˜ ๋น„๊ต [1, 2]. - [[Core Web Vitals|Core Web Vitals]] - ํ™•์žฅ ๋ฐฉํ–ฅ: Vite์˜ ์ฒญํฌ ๋ถ„ํ•  ๋ฐ ์ง€์—ฐ ๋กœ๋”ฉ ๊ธฐ๋ฒ•์ด ์‹ค์ œ ์‚ฌ์šฉ์ž ๊ฒฝํ—˜ ์ง€ํ‘œ์ธ FCP(First Contentful Paint), LCP(Largest Contentful Paint), INP(Interaction to Next Paint)์— ์–ด๋–ป๊ฒŒ ์ง๊ฒฐ๋˜๋Š”์ง€ ํƒ๊ตฌ [17, 20]. --- *Last updated: 2026-04-30*