# [[Vite and Bundling]] ## ๐Ÿ“Œ Brief Summary Vite๋Š” Webpack์„ ๋Œ€์ฒดํ•˜๋ฉฐ ํ”„๋ก ํŠธ์—”๋“œ ๊ฐœ๋ฐœ์˜ ์ƒˆ๋กœ์šด ํ‘œ์ค€์œผ๋กœ ์ž๋ฆฌ ์žก์€ ๋ชจ๋˜ ๋นŒ๋“œ ๋„๊ตฌ์ž…๋‹ˆ๋‹ค [1, 2]. ๊ฐœ๋ฐœ ๋‹จ๊ณ„์—์„œ๋Š” ๋ธŒ๋ผ์šฐ์ €์— ๋„ค์ดํ‹ฐ๋ธŒ ES ๋ชจ๋“ˆ(ESM) ํ˜•ํƒœ๋กœ ์ฝ”๋“œ๋ฅผ ์ง์ ‘ ์ œ๊ณตํ•˜์—ฌ ์ฆ‰๊ฐ์ ์ธ ์„œ๋ฒ„ ์‹œ์ž‘๊ณผ ๋น ๋ฅธ ํ•ซ ๋ชจ๋“ˆ ๊ต์ฒด(HMR)๋ฅผ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค [2-4]. ํ”„๋กœ๋•์…˜ ๋ฐฐํฌ ์‹œ์—๋Š” ๋‚ด๋ถ€์ ์œผ๋กœ Rollup์„ ์‚ฌ์šฉํ•˜์—ฌ ์ฝ”๋“œ๋ฅผ ๋ถ„ํ• ํ•˜๊ณ  ์ตœ์ ํ™”๋œ ๋ฒˆ๋“ค์„ ์ƒ์„ฑํ•จ์œผ๋กœ์จ ์ดˆ๊ธฐ ๋กœ๋”ฉ ์†๋„๋ฅผ ๋†’์ด๊ณ  ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ์„ฑ๋Šฅ์„ ์ตœ์ ํ™”ํ•ฉ๋‹ˆ๋‹ค [5-7]. ## ๐Ÿ“– Core Content * **ํ•˜์ด๋ธŒ๋ฆฌ๋“œ ์•„ํ‚คํ…์ฒ˜:** Vite๋Š” ๊ฐœ๋ฐœ ๋‹จ๊ณ„์—์„œ ์ „์ฒด ์ฝ”๋“œ๋ฅผ ๋ฏธ๋ฆฌ ๋ฒˆ๋“ค๋งํ•˜์ง€ ์•Š๊ณ  ๋„ค์ดํ‹ฐ๋ธŒ ES ๋ชจ๋“ˆ(ESM)์„ ๋ธŒ๋ผ์šฐ์ €์— ๋ฐ”๋กœ ์„œ๋น™ํ•ฉ๋‹ˆ๋‹ค [4]. ์ด ๊ณผ์ •์—์„œ esbuild๋‚˜ SWC(Rust ๊ธฐ๋ฐ˜ ์ปดํŒŒ์ผ๋Ÿฌ)๋ฅผ ์‚ฌ์šฉํ•ด JSX์™€ TypeScript๋ฅผ ๊ฑฐ์˜ ์ฆ‰์‹œ ์ปดํŒŒ์ผํ•ฉ๋‹ˆ๋‹ค [2, 4]. ๋ฐ˜๋ฉด, ๋ฐฐํฌํ•  ๋•Œ๋Š” Rollup์„ ์‚ฌ์šฉํ•˜์—ฌ ์ž๋™ ์ฝ”๋“œ ๋ถ„ํ• ๊ณผ ๋ฏธ์‚ฌ์šฉ ์ฝ”๋“œ ์ œ๊ฑฐ(Tree-shaking)๊ฐ€ ์ ์šฉ๋œ ๊ฐ€๋ณ๊ณ  ์ตœ์ ํ™”๋œ ํ”„๋กœ๋•์…˜ ๋ฒˆ๋“ค์„ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค [5, 6]. * **๊ฑฐ๋Œ€ํ•œ ์ฒญํฌ(Large Chunks) ๋ฌธ์ œ:** ๊ธฐ๋ณธ ์„ค์ •์—์„œ Vite๋Š” ์•ฑ ์ฝ”๋“œ์™€ ๋ชจ๋“  `node_modules` ์ข…์†์„ฑ(React, ์„œ๋“œํŒŒํ‹ฐ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ๋“ฑ)์„ ํ•˜๋‚˜์˜ ๊ฑฐ๋Œ€ํ•œ `index.js` ํŒŒ์ผ๋กœ ๋ฌถ์–ด ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค [8]. ์ด๋Š” ๋ชจ๋ฐ”์ผ ๊ธฐ๊ธฐ์—์„œ์˜ ํŒŒ์‹ฑ ์ง€์—ฐ๊ณผ ๋น„ํšจ์œจ์ ์ธ ์บ์‹œ ๋ฌดํšจํ™” ๋“ฑ ์„ฑ๋Šฅ ์ €ํ•˜๋ฅผ ์ดˆ๋ž˜ํ•˜๋ฉฐ, ์ข…์ข… ๋นŒ๋“œ ์‹œ "500 kB ์ดˆ๊ณผ" ๊ฒฝ๊ณ ๋ฅผ ๋ฐœ์ƒ์‹œํ‚ต๋‹ˆ๋‹ค [7, 9]. * **์ˆ˜๋™ ์ฒญํฌ ๋ถ„ํ•  (manualChunks):** ์œ„ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด `vite.config.js`์˜ Rollup ์˜ต์…˜ ์ค‘ `manualChunks`๋ฅผ ์„ค์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค [10, 11]. React ํ•ต์‹ฌ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋‚˜ ์ฐจํŠธ ๋„๊ตฌ ๋“ฑ ๋ฌด๊ฑฐ์šด ๋ฒค๋”(Vendor) ํŒจํ‚ค์ง€๋ฅผ ๋ณ„๋„์˜ ํŒŒ์ผ๋กœ ๋ถ„๋ฆฌํ•˜๋ฉด, ํ•ด๋‹น ์ฝ”๋“œ๋Š” ์ž์ฃผ ๋ณ€๊ฒฝ๋˜์ง€ ์•Š์œผ๋ฏ€๋กœ ๋ธŒ๋ผ์šฐ์ €๊ฐ€ ์žฅ๊ธฐ ์บ์‹ฑ์„ ํ•  ์ˆ˜ ์žˆ์–ด ๋‹ค์šด๋กœ๋“œ ํšจ์œจ์ด ๊ทน๋Œ€ํ™”๋ฉ๋‹ˆ๋‹ค [6, 11, 12]. * **๋™์  ์ž„ํฌํŠธ์™€ ์ง€์—ฐ ๋กœ๋”ฉ (Code Splitting & Lazy Loading):** `React.lazy`์™€ ``๋ฅผ ๊ฒฐํ•ฉํ•˜์—ฌ ๋ผ์šฐํŠธ ์ˆ˜์ค€์—์„œ ์ฝ”๋“œ๋ฅผ ๋ถ„ํ• (Code Splitting)ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค [11, 13]. ์ด ๊ธฐ๋ฒ•์„ ํ†ตํ•ด ์‚ฌ์šฉ์ž๊ฐ€ ํŠน์ • ๋ผ์šฐํŠธ๋‚˜ ๊ธฐ๋Šฅ์— ์ ‘๊ทผํ•  ๋•Œ๋งŒ ํ•ด๋‹น ์ฒญํฌ๋ฅผ ๋‹ค์šด๋กœ๋“œํ•˜๊ฒŒ ๋งŒ๋“ค ์ˆ˜ ์žˆ์œผ๋ฉฐ, ์ด๋Š” ์ดˆ๊ธฐ ๋กœ๋”ฉ ๋ฒˆ๋“ค ํฌ๊ธฐ๋ฅผ ํš๊ธฐ์ ์œผ๋กœ ์ค„์—ฌ์ค๋‹ˆ๋‹ค [13-16]. * **๋ฒˆ๋“ค ํฌ๊ธฐ ๋ถ„์„:** ํ”„๋กœ์ ํŠธ์˜ ๋ฒˆ๋“ค ๊ตฌ์„ฑ์„ ์‹œ๊ฐ์ ์œผ๋กœ ๋ถ„์„ํ•˜๊ธฐ ์œ„ํ•ด `rollup-plugin-visualizer`๋ฅผ ์„ค์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค [13, 16]. ๋นŒ๋“œ ํ›„ ์‹œ๊ฐํ™”๋œ ํŠธ๋ฆฌ๋งต์„ ํ†ตํ•ด ํ•„์š” ์ด์ƒ์œผ๋กœ ํฐ ํŒจํ‚ค์ง€๋‚˜ ๋ถˆํ•„์š”ํ•œ ์ฝ”๋“œ๋ฅผ ์‹๋ณ„ํ•˜์—ฌ ์ตœ์ ํ™” ๊ธฐํšŒ๋ฅผ ์ฐพ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค [16, 17]. ## โš–๏ธ Trade-offs & Caveats * **๊ณผ๋„ํ•œ ํ”Œ๋Ÿฌ๊ทธ์ธ ์‚ฌ์šฉ ์‹œ์˜ ์„ฑ๋Šฅ ์ €ํ•˜:** Vite์—์„œ ํ”Œ๋Ÿฌ๊ทธ์ธ์„ ์ง€๋‚˜์น˜๊ฒŒ ๋งŽ์ด ์‚ฌ์šฉํ•˜๋ฉด ๊ฐœ๋ฐœ ์„œ๋ฒ„์˜ ์†๋„๊ฐ€ ๋А๋ ค์งˆ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํ™˜๊ฒฝ์„ ์พŒ์ ํ•˜๊ฒŒ ์œ ์ง€ํ•˜๋ ค๋ฉด ์„ค์ •์„ ๊ฐ€๋ณ๊ณ  ํ•„์ˆ˜์ ์œผ๋กœ ์œ ์ง€ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค [17]. * **๋ธŒ๋ผ์šฐ์ € ์บ์‹ฑ ์˜์กด๋„:** ๊ฐœ๋ฐœ ๋ชจ๋“œ์—์„œ ๋ชจ๋“ˆ ๋กœ๋”ฉ ์„ฑ๋Šฅ์„ ์œ„ํ•ด ๋ธŒ๋ผ์šฐ์ € ์บ์‹ฑ์— ํฌ๊ฒŒ ์˜์กดํ•ฉ๋‹ˆ๋‹ค. ๊ฐœ๋ฐœ์ž ๋„๊ตฌ์—์„œ ์บ์‹œ๋ฅผ ๋น„ํ™œ์„ฑํ™”ํ•˜๋ฉด Vite์˜ ์„ฑ๋Šฅ ์ด์ ์„ ์žƒ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค [17]. * **์ง€์—ฐ ๋กœ๋”ฉ(Lazy Loading) ๋‚จ์šฉ์˜ ๋ถ€์ž‘์šฉ:** ์ฝ”๋“œ ๋ถ„ํ• ์€ ์œ ์šฉํ•˜์ง€๋งŒ ๋‚จ์šฉํ•  ๊ฒฝ์šฐ ์˜คํžˆ๋ ค ์‚ฌ์šฉ์ž ๊ฒฝํ—˜์„ ํ•ด์น  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์‚ฌ์šฉ์ž๊ฐ€ ์ ‘์†ํ•˜์ž๋งˆ์ž ์ฆ‰์‹œ ๋ด์•ผ ํ•˜๋Š” 'Above-the-fold(์Šคํฌ๋กค ์—†์ด ๋ณผ ์ˆ˜ ์žˆ๋Š” ์ƒ๋‹จ ์˜์—ญ)'์˜ ํ•„์ˆ˜ ์ปดํฌ๋„ŒํŠธ๋Š” ์ง€์—ฐ ๋กœ๋”ฉ์„ ํ”ผํ•˜๊ณ  ์ดˆ๊ธฐ ๋ฒˆ๋“ค์— ํฌํ•จ์‹œ์ผœ์•ผ ํ•ฉ๋‹ˆ๋‹ค [18]. * **์‚ฌ์ „ ๋ฒˆ๋“ค๋ง ์ œ์–ด์˜ ํ•„์š”์„ฑ:** Vite๋Š” ๊ฐœ๋ฐœ ์†๋„๋ฅผ ์œ„ํ•ด ์™ธ๋ถ€ ์ข…์†์„ฑ์„ ์‚ฌ์ „์— ๋ฒˆ๋“ค๋ง(Pre-bundling)ํ•˜์ง€๋งŒ, ๋Œ€๊ทœ๋ชจ ์•ฑ์ด๋‚˜ ํŠน์ดํ•œ ๊ตฌ์กฐ์˜ ํŒจํ‚ค์ง€๊ฐ€ ์„ž์—ฌ ์žˆ์„ ๊ฒฝ์šฐ ์†๋„ ์ €ํ•˜๊ฐ€ ์˜ฌ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋Ÿฐ ๊ฒฝ์šฐ `optimizeDeps`๋ฅผ ์„ธ์‹ฌํ•˜๊ฒŒ ์ œ์–ดํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค [13, 19]. ## ๐Ÿ”— Knowledge Connections ### Related Concepts #### [์•„ํ‚คํ…์ฒ˜/๊ธฐ๋ฐ˜ ๊ธฐ์ˆ ] - [[Rollup]] - ์—ฐ๊ฒฐ ์ด์œ : Vite๊ฐ€ ํ”„๋กœ๋•์…˜ ๋นŒ๋“œ์™€ ๋ฒˆ๋“ค๋ง์„ ์ˆ˜ํ–‰ํ•  ๋•Œ ๋ฐฑ์—”๋“œ ์—”์ง„์œผ๋กœ ์‚ฌ์šฉํ•˜๋Š” ๋ฒˆ๋“ค๋Ÿฌ์ž…๋‹ˆ๋‹ค [5, 6]. - ์ด ๊ฐœ๋…์„ ํ†ตํ•ด ๋” ๊นŠ๊ฒŒ ์ดํ•ดํ•  ์ˆ˜ ์žˆ๋Š” ๋ถ€๋ถ„: Vite์˜ `manualChunks` ๊ธฐ๋Šฅ์ด ์–ด๋–ป๊ฒŒ ๋™์ž‘ํ•˜๋Š”์ง€, ์บ์‹œ ํšจ์œจ์„ฑ์„ ์œ„ํ•œ ์ฒญํฌ ๋ถ„ํ•  ๊ธฐ๋ฒ•์˜ ์›๋ฆฌ๋ฅผ ๋ช…ํ™•ํ•˜๊ฒŒ ํŒŒ์•…ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค [6, 10, 11]. - [[Native ES Modules (ESM)]] - ์—ฐ๊ฒฐ ์ด์œ : Vite๊ฐ€ ๊ฐœ๋ฐœ ๋ชจ๋“œ์—์„œ ํ”„๋กœ์ ํŠธ ํŒŒ์ผ๋“ค์„ ๋ฒˆ๋“ค๋งํ•˜์ง€ ์•Š๊ณ  ๋ธŒ๋ผ์šฐ์ €์— ๋ฐ”๋กœ ์ „๋‹ฌํ•˜๋Š” ๋ฐฉ์‹์ž…๋‹ˆ๋‹ค [2-4]. - ์ด ๊ฐœ๋…์„ ํ†ตํ•ด ๋” ๊นŠ๊ฒŒ ์ดํ•ดํ•  ์ˆ˜ ์žˆ๋Š” ๋ถ€๋ถ„: ๊ธฐ์กด์˜ Webpack๊ณผ ๋‹ฌ๋ฆฌ Vite๊ฐ€ ์•ฑ ๊ทœ๋ชจ์— ์ƒ๊ด€์—†์ด ์ฆ‰๊ฐ์ ์ธ HMR(Hot Module Replacement)๊ณผ ๋น ๋ฅธ ๊ตฌ๋™ ์†๋„๋ฅผ ๋‹ฌ์„ฑํ•˜๋Š” ํ•ต์‹ฌ ์›๋ฆฌ๋ฅผ ์ดํ•ดํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค [3, 4]. - [[SWC]] - ์—ฐ๊ฒฐ ์ด์œ : Babel์„ ๋Œ€์ฒดํ•˜์—ฌ Vite์˜ React ํ”Œ๋Ÿฌ๊ทธ์ธ ๋‚ด์—์„œ ์ฝ”๋“œ๋ฅผ ๊ณ ์†์œผ๋กœ ์ปดํŒŒ์ผํ•˜๋Š” Rust ๊ธฐ๋ฐ˜ ์ปดํŒŒ์ผ๋Ÿฌ์ž…๋‹ˆ๋‹ค [4, 20]. - ์ด ๊ฐœ๋…์„ ํ†ตํ•ด ๋” ๊นŠ๊ฒŒ ์ดํ•ดํ•  ์ˆ˜ ์žˆ๋Š” ๋ถ€๋ถ„: ๋Œ€๊ทœ๋ชจ ํ”„๋กœ์ ํŠธ์—์„œ ๊ฐœ๋ฐœ ๋นŒ๋“œ์™€ ๋ฆฌํ”„๋ ˆ์‹œ ์‹œ๊ฐ„์„ ํš๊ธฐ์ ์œผ๋กœ ์ค„์ด๋Š” ์ตœ์‹  ์ปดํŒŒ์ผ ์„ฑ๋Šฅ ์ตœ์ ํ™”์˜ ๊ธฐ์ˆ ์  ๊ธฐ๋ฐ˜์„ ์•Œ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค [19-21]. #### [๊ตฌํ˜„/ํ™œ์šฉ ๋„๊ตฌ] - [[Code Splitting]] - ์—ฐ๊ฒฐ ์ด์œ : ๋ฌด๊ฑฐ์šด ๋ฉ”์ธ ๋ฒˆ๋“ค์„ ์ž‘์€ ์ฒญํฌ ๋‹จ์œ„๋กœ ๋‚˜๋ˆ„๋Š” ์ตœ์ ํ™” ์ „๋žต์˜ ํ•ต์‹ฌ์ž…๋‹ˆ๋‹ค [8, 13, 14]. - ์ด ๊ฐœ๋…์„ ํ†ตํ•ด ๋” ๊นŠ๊ฒŒ ์ดํ•ดํ•  ์ˆ˜ ์žˆ๋Š” ๋ถ€๋ถ„: `React.lazy`์™€ ๊ฒฐํ•ฉํ•ด ์ฝ”๋“œ๋ฅผ ์˜จ๋””๋งจ๋“œ(On-demand)๋กœ ๋ถˆ๋Ÿฌ์˜ค๋ฉฐ, ์ดˆ๊ธฐ ๋กœ๋”ฉ ์†๋„์™€ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ํŽ˜์ด๋กœ๋“œ ํฌ๊ธฐ๋ฅผ ๊ฐœ์„ ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ๊นŠ๊ฒŒ ์ดํ•ดํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค [11, 13, 15, 22]. ### Deeper Research Questions - ๊ฐœ๋ฐœ ๋‹จ๊ณ„์—์„œ Native ESM์œผ๋กœ ์„œ๋น™ํ•˜๋Š” ๋ฐฉ์‹๊ณผ ํ”„๋กœ๋•์…˜์—์„œ Rollup์œผ๋กœ ๋ฒˆ๋“ค๋งํ•˜๋Š” ๋ฐฉ์‹์˜ ์•„ํ‚คํ…์ฒ˜์  ์ฐจ์ด๋กœ ์ธํ•ด ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋Š” ๋นŒ๋“œ ๋ถˆ์ผ์น˜(Build Inconsistency) ๋ฌธ์ œ์™€ ๊ทธ ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์€ ๋ฌด์—‡์ธ๊ฐ€? - `manualChunks`๋ฅผ ์„ค์ •ํ•  ๋•Œ, ๋ฒค๋” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ํ•˜๋‚˜๋กœ ๋ฌถ๋Š” ๊ฒƒ๊ณผ ์—ฌ๋Ÿฌ ๊ฐœ์˜ ์ฒญํฌ๋กœ ์ž˜๊ฒŒ ์ชผ๊ฐœ๋Š” ๊ฒƒ ์ค‘ ๋ธŒ๋ผ์šฐ์ € ํŒŒ์‹ฑ ๋ฐ ์บ์‹œ ํšจ์œจ ์ธก๋ฉด์—์„œ ์ด์ƒ์ ์ธ ๊ธฐ์ค€(Threshold)์€ ์–ด๋–ป๊ฒŒ ๊ฒฐ์ •ํ•ด์•ผ ํ•˜๋Š”๊ฐ€? [7, 11] - ๋ผ์šฐํŠธ ๋ ˆ๋ฒจ์˜ ์ง€์—ฐ ๋กœ๋”ฉ(Lazy Loading)์„ ๊ตฌํ˜„ํ•  ๋•Œ, ๋‹ค์Œ ๋ผ์šฐํŠธ ์ด๋™ ์‹œ ๋กœ๋”ฉ ์ง€์—ฐ์„ ๋ง‰๊ธฐ ์œ„ํ•ด ๋ธŒ๋ผ์šฐ์ €์˜ `preload` ๋˜๋Š” `prefetch` ํžŒํŠธ๋ฅผ ์–ด๋–ป๊ฒŒ ๊ฒฐํ•ฉํ•˜๋Š” ๊ฒƒ์ด ํšจ์œจ์ ์ธ๊ฐ€? [23, 24] - Vite ํ™˜๊ฒฝ์—์„œ ๋Œ€์šฉ๋Ÿ‰ ์„œ๋“œํŒŒํ‹ฐ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์˜ ๋ถˆํ•„์š”ํ•œ ์ฝ”๋“œ๋ฅผ ์™„์ „ํžˆ ์ œ๊ฑฐํ•˜๊ธฐ ์œ„ํ•ด, ํŠธ๋ฆฌ ์‰์ดํ‚น(Tree-shaking)์„ ๊ทน๋Œ€ํ™”ํ•  ์ˆ˜ ์žˆ๋Š” ๋ชจ๋“ˆ ์ž„ํฌํŠธ ํŒจํ„ด์€ ๋ฌด์—‡์ธ๊ฐ€? [17] - `optimizeDeps`๋ฅผ ํ†ตํ•œ ์‚ฌ์ „ ๋ฒˆ๋“ค๋ง ์ฒ˜๋ฆฌ ๊ณผ์ •์—์„œ, ๊ฐœ๋ฐœ ํ™˜๊ฒฝ ์†๋„๋ฅผ ์‹ฌ๊ฐํ•˜๊ฒŒ ๋–จ์–ด๋œจ๋ฆด ์ˆ˜ ์žˆ๋Š” 'ํŠน์ดํ•œ ํŒจํ‚ค์ง€(Unusual Dependencies)'์˜ ๊ธฐ์ˆ ์  ํŠน์ง•์€ ๋ฌด์—‡์ธ๊ฐ€? [13, 19] ### Practical Application Contexts - **Implementation:** React + Vite ํ”„๋กœ์ ํŠธ ์‹œ์ž‘ ์‹œ `vite.config.js`์— `@vitejs/plugin-react-swc`๋ฅผ ๋„์ž…ํ•˜์—ฌ ๋น ๋ฅธ ๋นŒ๋“œ ํ™˜๊ฒฝ์„ ๊ตฌ์ถ•ํ•˜๊ณ , ์ ˆ๋Œ€ ๊ฒฝ๋กœ ํŒจ์Šค ๋ณ„์นญ(Path Aliases)์„ ์„ค์ •ํ•˜์—ฌ ๋ชจ๋“ˆ ๊ด€๋ฆฌ ํšจ์œจ์„ ๋†’์ž…๋‹ˆ๋‹ค [20, 21]. `rollup-plugin-visualizer`๋ฅผ ์ถ”๊ฐ€ํ•ด ๋นŒ๋“œ ๊ฒฐ๊ณผ๋ฌผ์˜ ์‚ฌ์ด์ฆˆ๋ฅผ ์ •๊ธฐ์ ์œผ๋กœ ์ฒดํฌํ•ฉ๋‹ˆ๋‹ค [13, 25]. - **System Design:** ์ดˆ๊ธฐ ์•„ํ‚คํ…์ฒ˜ ์„ค๊ณ„ ์‹œ๋ถ€ํ„ฐ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ฝ”๋“œ๋ฅผ ๋„๋ฉ”์ธ ๋ฐ ๋ผ์šฐํŠธ๋ณ„๋กœ ๋ถ„๋ฆฌํ•˜๊ณ , `manualChunks`๋ฅผ ๊ตฌ์„ฑํ•ด React ์—”์ง„ ๋“ฑ ๋ฌด๊ฑฐ์šด ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์™€ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง์ด ๋…๋ฆฝ๋œ ํŒŒ์ผ๋กœ ๋ฒˆ๋“ค๋ง ๋˜๋„๋ก ๋ธŒ๋ผ์šฐ์ € ์บ์‹ฑ ์ „๋žต์„ ์„ธ์›๋‹ˆ๋‹ค [6, 10, 11]. - **Operation / Maintenance:** ํ”„๋กœ๋•์…˜ ๋นŒ๋“œ ํŒŒ์ดํ”„๋ผ์ธ์—์„œ "Some chunks are larger than 500 kB" ๊ฒฝ๊ณ ๋ฅผ ๋ชจ๋‹ˆํ„ฐ๋ง ์ฒด๊ณ„์— ํ†ตํ•ฉํ•ฉ๋‹ˆ๋‹ค. ๊ฒฝ๊ณ  ๋ฐœ์ƒ ์‹œ `stats.html` ํŒŒ์ผ์„ ๋ถ„์„ํ•˜์—ฌ ์–ด๋–ค ํŒจํ‚ค์ง€๊ฐ€ ๋ฉ”์ธ ๋ฒˆ๋“ค์„ ๋น„๋Œ€ํ™”์‹œํ‚ค๋Š”์ง€ ํŒŒ์•…ํ•˜๊ณ  ๋™์  ์ž„ํฌํŠธ๋กœ ๋ฆฌํŒฉํ„ฐ๋งํ•ฉ๋‹ˆ๋‹ค [8, 9, 16]. - **Learning Path:** ์šฐ์„  ๋ธŒ๋ผ์šฐ์ €์˜ ES ๋ชจ๋“ˆ ์ฒ˜๋ฆฌ ๋ฐฉ์‹๊ณผ Vite์˜ ํ•ต์‹ฌ ๊ฐœ๋ฐœ ์ฒ ํ•™์„ ๋ฐฐ์šด ๋’ค, Rollup์˜ ๋ฒˆ๋“ค๋ง ๊ฐœ๋…์„ ์ตํž™๋‹ˆ๋‹ค. ์ดํ›„ React์˜ `Suspense` ๋ฐ `React.lazy`๋ฅผ ํ†ตํ•œ ์ฝ”๋“œ ์Šคํ”Œ๋ฆฌํŒ… ํŒจํ„ด์„ ํ”„๋กœ์ ํŠธ์— ์ง์ ‘ ์ ์šฉํ•˜๋Š” ์ˆœ์„œ๋กœ ํ•™์Šตํ•ฉ๋‹ˆ๋‹ค [3, 4, 13]. - **My Project Relevance:** ๊ฑฐ๋Œ€ํ•œ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ๋ฒˆ๋“ค์ด ์‚ฌ์šฉ์ž ๊ธฐ๊ธฐ์— ๋ถ€๋‹ด์„ ์ฃผ๋Š” ๋Œ€์‹œ๋ณด๋“œ๋‚˜ ์Šคํ† ์–ดํ”„๋ก ํŠธ ๊ตฌ์ถ• ์‹œ, Vite ๋ฒˆ๋“ค๋ง ์ตœ์ ํ™”๋ฅผ ์ ์šฉํ•˜์—ฌ ์ดˆ๊ธฐ ๋‹ค์šด๋กœ๋“œ ์‹œ๊ฐ„์„ ์ค„์ด๊ณ  ์„ฑ๋Šฅ ์ ์ˆ˜(LCP, INP ๋“ฑ)๋ฅผ ๊ทน๋Œ€ํ™”ํ•˜๋Š” ์ง์ ‘์ ์ธ ํ•ด๊ฒฐ์ฑ…์œผ๋กœ ํ™œ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค [7, 22, 26]. ### Adjacent Topics - [[Core Web Vitals]] - ํ™•์žฅ ๋ฐฉํ–ฅ: ๋ฒˆ๋“ค ์ตœ์ ํ™” ๋ฐ ์ง€์—ฐ ๋กœ๋”ฉ์ด FCP(First Contentful Paint), LCP(Largest Contentful Paint), INP(Interaction to Next Paint)์™€ ๊ฐ™์€ ๊ตฌ์ฒด์  ์„ฑ๋Šฅ ์ง€ํ‘œ๋ฅผ ์–ด๋–ป๊ฒŒ ๊ฐœ์„ ํ•˜๋Š”์ง€์— ๋Œ€ํ•œ ์ธก์ • ๋ฐฉ๋ฒ• ๋ฐ ์—ฐ๊ด€์„ฑ ํƒ๊ตฌ [7, 14, 22, 26]. - [[Micro-Frontends]] - ํ™•์žฅ ๋ฐฉํ–ฅ: ๋ฒˆ๋“ค๋ง ์ตœ์ ํ™”์˜ ์—ฐ์žฅ์„ ์œผ๋กœ ๋‹จ์ผ ๊ฑฐ๋Œ€ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜(Monolith)์„ ์—ฌ๋Ÿฌ ๊ฐœ์˜ ๋…๋ฆฝ๋œ ๋นŒ๋“œ/๋ฐฐํฌ ๋‹จ์œ„๋กœ ์ชผ๊ฐœ๋Š” ์•„ํ‚คํ…์ฒ˜์  ์ง„ํ™” ๋ฐฉํ–ฅ์— ๋Œ€ํ•œ ์‹ฌ์ธต ์—ฐ๊ตฌ [27]. --- *Last updated: 2026-04-30*