--- id: wiki-2026-0508-vite-build-system title: Vite Build System category: 10_Wiki/Topics status: needs_review canonical_id: self aliases: [] duplicate_of: none source_trust_level: A confidence_score: 0.92 tags: [uncategorized] raw_sources: [] last_reinforced: 2026-05-08 github_commit: pending inferred_by: Claude Opus 4.7 (auto-normalize 2026-05-08) tech_stack: language: unspecified framework: unspecified --- # [[Vite Build System|Vite Build System]] ## πŸ“Œ ν•œ 쀄 톡찰 (The Karpathy Summary) ViteλŠ” ν˜„λŒ€ ν”„λ‘ νŠΈμ—”λ“œ μ• ν”Œλ¦¬μΌ€μ΄μ…˜(특히 React) κ°œλ°œμ„ μœ„ν•œ μƒˆλ‘œμš΄ μ‚°μ—… ν‘œμ€€ λΉŒλ“œ λ„κ΅¬λ‘œ, 거의 즉각적인 μ„œλ²„ μ‹œμž‘κ³Ό μ΄ˆκ³ μ† HMR(Hot Module Replacement)을 μ œκ³΅ν•©λ‹ˆλ‹€ [1, 2]. κΈ°μ‘΄ λ²ˆλ“€λŸ¬μ™€ 달리 개발 ν™˜κ²½μ—μ„œλŠ” λΈŒλΌμš°μ €μ— λ„€μ΄ν‹°λΈŒ ES λͺ¨λ“ˆ ν˜•νƒœλ‘œ μ½”λ“œλ₯Ό μ œκ³΅ν•˜κ³ , ν”„λ‘œλ•μ…˜ ν™˜κ²½μ—μ„œλŠ” Rollup을 μ‚¬μš©ν•˜μ—¬ κ³ λ„λ‘œ μ΅œμ ν™”λœ λ²ˆλ“€μ„ μƒμ„±ν•˜λŠ” ν•˜μ΄λΈŒλ¦¬λ“œ μ•„ν‚€ν…μ²˜λ₯Ό μ‚¬μš©ν•©λ‹ˆλ‹€ [3, 4]. λ˜ν•œ SWCλ‚˜ esbuild와 같은 Rust 기반 컴파일러λ₯Ό ν™œμš©ν•˜μ—¬ λŒ€κ·œλͺ¨ ν”„λ‘œμ νŠΈμ—μ„œλ„ λΉ λ₯΄κ³  μ›ν™œν•œ 개발자 κ²½ν—˜μ„ 보μž₯ν•©λ‹ˆλ‹€ [3, 5, 6]. ## πŸ“– κ΅¬μ‘°ν™”λœ 지식 (Synthesized Content) * **ν•˜μ΄λΈŒλ¦¬λ“œ μ•„ν‚€ν…μ²˜ (개발 및 ν”„λ‘œλ•μ…˜)**: ViteλŠ” 개발 μ‹œ λͺ¨λ“  μ½”λ“œλ₯Ό 사전에 λ²ˆλ“€λ§ν•˜λŠ” λŒ€μ‹ , μ½”λ“œλ₯Ό λ„€μ΄ν‹°λΈŒ ES λͺ¨λ“ˆ(ESM) ν˜•νƒœλ‘œ λΈŒλΌμš°μ €μ— 직접 μ œκ³΅ν•©λ‹ˆλ‹€ [2, 3]. 이 방식은 ν•„μš”ν•  λ•Œ ν•„μš”ν•œ 파일만 λ‘œλ“œν•˜λ―€λ‘œ ν”„λ‘œμ νŠΈ 규λͺ¨κ°€ 컀져도 μ„œλ²„ μ‹œμž‘ 및 κ°±μ‹  속도가 맀우 λΉ λ¦…λ‹ˆλ‹€ [3, 7]. 반면, ν”„λ‘œλ•μ…˜ 배포 μ‹œμ—λŠ” λ‚΄λΆ€μ μœΌλ‘œ Rollup을 μ‚¬μš©ν•˜μ—¬ μžλ™ μ½”λ“œ μŠ€ν”Œλ¦¬νŒ…, λ―Έμ‚¬μš© μ½”λ“œ 제거(Tree-shaking), μžμ‚° μ΅œμ ν™” 등을 μˆ˜ν–‰ν•˜μ—¬ μ„±λŠ₯이 λ›°μ–΄λ‚œ λ²ˆλ“€μ„ μƒμ„±ν•©λ‹ˆλ‹€ [4, 8]. * **μ΄ˆκ³ μ† 컴파일러 및 ν”ŒλŸ¬κ·ΈμΈ ν™œμš©**: ViteλŠ” 컴파일 속도λ₯Ό 높이기 μœ„ν•΄ Rust 기반의 컴파일러인 SWC λ˜λŠ” esbuildλ₯Ό μ‚¬μš©ν•©λ‹ˆλ‹€ [3]. κΈ°μ‘΄ Babel λŒ€μ‹  `@vitejs/plugin-react-swc`λ₯Ό μ‚¬μš©ν•˜λ©΄ JSX 및 TypeScript 컴파일 속도가 λΉ„μ•½μ μœΌλ‘œ ν–₯μƒλ˜μ–΄ μž¬λΉŒλ“œ μ‹œκ°„μ΄ λ‹¨μΆ•λ©λ‹ˆλ‹€ [5, 6, 9]. 이외에도 `vite-plugin-svgr`(SVG μ»΄ν¬λ„ŒνŠΈν™”), `vite-plugin-pwa`와 같은 μœ μ—°ν•œ ν”ŒλŸ¬κ·ΈμΈ μƒνƒœκ³„λ₯Ό μ§€μ›ν•©λ‹ˆλ‹€ [10]. * **κ³ κΈ‰ ꡬ성 (vite.config.js)**: ViteλŠ” `vite.config.js`λ₯Ό 톡해 λ³΅μž‘ν•œ ν”„λ‘œμ νŠΈ 섀정을 μ œμ–΄ν•  수 μžˆμŠ΅λ‹ˆλ‹€. 예λ₯Ό λ“€μ–΄ 경둜 별칭(Path Aliases)을 μ„€μ •ν•˜μ—¬ μž„ν¬νŠΈλ₯Ό κΉ”λ”ν•˜κ²Œ κ΄€λ¦¬ν•˜κ±°λ‚˜, `VITE_` 접두사가 뢙은 ν™˜κ²½ λ³€μˆ˜λ§Œμ„ μ•ˆμ „ν•˜κ²Œ λ…ΈμΆœν•˜λ©°, 개발 쀑 CORS 문제λ₯Ό ν”Όν•˜κΈ° μœ„ν•œ λ‚΄μž₯ ν”„λ‘μ‹œ μ„œλ²„ 섀정을 μ§€μ›ν•©λ‹ˆλ‹€ [5, 9, 11]. * **μ„±λŠ₯ νŠœλ‹ 및 λŒ€μš©λŸ‰ 청크(Chunk) 관리**: λŒ€κ·œλͺ¨ μ•±μ—μ„œλŠ” 무거운 벀더 라이브러리둜 인해 메인 λ²ˆλ“€μ΄ κ³Όλ„ν•˜κ²Œ μ»€μ§€λŠ” 문제("chunks are larger than 500 kB")κ°€ λ°œμƒν•  수 μžˆμŠ΅λ‹ˆλ‹€ [12-14]. 이λ₯Ό ν•΄κ²°ν•˜κΈ° μœ„ν•΄ `manualChunks`λ₯Ό μ‚¬μš©ν•˜μ—¬ React, 차트 라이브러리 λ“± 자주 λ³€κ²½λ˜μ§€ μ•ŠλŠ” 벀더 μ½”λ“œλ₯Ό λ³„λ„μ˜ 파일둜 뢄리해 λΈŒλΌμš°μ € 캐싱을 κ·ΉλŒ€ν™”ν•©λ‹ˆλ‹€ [8, 11, 14-16]. 이와 ν•¨κ»˜ `React.lazy`와 ``λ₯Ό μ΄μš©ν•œ 라우트 레벨의 동적 μž„ν¬νŠΈ(μ½”λ“œ μŠ€ν”Œλ¦¬νŒ…)λ₯Ό μ μš©ν•˜κ³ , `rollup-plugin-visualizer`둜 λ²ˆλ“€ 크기λ₯Ό μ‹œκ°μ μœΌλ‘œ λΆ„μ„ν•˜μ—¬ λΆˆν•„μš”ν•œ μ½”λ“œλ₯Ό μ œκ±°ν•˜λŠ” 것이 λͺ¨λ²” μ‚¬λ‘€μž…λ‹ˆλ‹€ [16-19]. ## πŸ”— 지식 μ—°κ²° (Graph) ### Related Concepts - Native ES Modules (ESM) - μ—°κ²° 이유: Viteκ°€ 개발 ν™˜κ²½μ—μ„œ 파일 전체λ₯Ό 사전 λ²ˆλ“€λ§ν•˜μ§€ μ•Šκ³ , ν•„μš”ν•  λ•Œ λΈŒλΌμš°μ €μ— μ½”λ“œλ₯Ό μ œκ³΅ν•˜λŠ” 핡심 λ©”μ»€λ‹ˆμ¦˜μ΄κΈ° λ•Œλ¬Έμž…λ‹ˆλ‹€ [3, 7]. - 이 κ°œλ…μ„ 톡해 더 깊게 이해할 수 μžˆλŠ” λΆ€λΆ„: Viteκ°€ κΈ°μ‘΄ 도ꡬ(Webpack λ“±)에 λΉ„ν•΄ μ–΄λ–»κ²Œ 초기 ꡬ동 속도와 HMR 응닡성을 극적으둜 단좕할 수 μžˆλŠ”μ§€ κ·Έ 원리λ₯Ό νŒŒμ•…ν•  수 μžˆμŠ΅λ‹ˆλ‹€ [2, 3]. - [[Rollup|Rollup]] - μ—°κ²° 이유: Viteκ°€ ν”„λ‘œλ•μ…˜μš© λΉŒλ“œλ₯Ό 생성할 λ•Œ λ‚΄λΆ€μ μœΌλ‘œ μ±„νƒν•˜κ³  μžˆλŠ” λ²ˆλ“€λŸ¬ 도ꡬ이기 λ•Œλ¬Έμž…λ‹ˆλ‹€ [4]. - 이 κ°œλ…μ„ 톡해 더 깊게 이해할 수 μžˆλŠ” λΆ€λΆ„: ν”„λ‘œλ•μ…˜ ν™˜κ²½μ—μ„œ 청크가 μ–΄λ–»κ²Œ λ‚˜λ‰˜λ©°(`manualChunks`), μ½”λ“œ μŠ€ν”Œλ¦¬νŒ…κ³Ό 트리 쉐이킹을 톡해 μ΅œμ ν™”λœ 정적 μžμ‚°μ΄ λ§Œλ“€μ–΄μ§€λŠ” 과정을 이해할 수 μžˆμŠ΅λ‹ˆλ‹€ [4, 8, 11]. - SWC (Speedy Web Compiler) - μ—°κ²° 이유: Vite ν™˜κ²½μ—μ„œ 기쑴의 Babel을 λŒ€μ²΄ν•˜μ—¬ JSX와 TypeScriptλ₯Ό μ‹€μ‹œκ°„μ— κ°€κΉκ²Œ λ³€ν™˜ν•˜λŠ” Rust 기반 컴파일러 기술이기 λ•Œλ¬Έμž…λ‹ˆλ‹€ [3, 5, 6]. - 이 κ°œλ…μ„ 톡해 더 깊게 이해할 수 μžˆλŠ” λΆ€λΆ„: λŒ€κ·œλͺ¨ React μ• ν”Œλ¦¬μΌ€μ΄μ…˜ 개발 μ‹œ 컴파일 속도와 ν•« λ¦¬λ‘œλ“œ 속도λ₯Ό ν–₯μƒν•˜λŠ” 기술적 배경을 깊이 이해할 수 μžˆμŠ΅λ‹ˆλ‹€ [3, 6]. - Code Splitting & manualChunks - μ—°κ²° 이유: λŒ€μš©λŸ‰ 메인 λ²ˆλ“€ 문제λ₯Ό ν•΄κ²°ν•˜κ³ , 초기 νŽ˜μ΄μ§€ λ‘œλ“œ 속도λ₯Ό 높이기 μœ„ν•œ Vite μ„±λŠ₯ μ΅œμ ν™”μ˜ 핡심 기법이기 λ•Œλ¬Έμž…λ‹ˆλ‹€ [12, 14]. - 이 κ°œλ…μ„ 톡해 더 깊게 이해할 수 μžˆλŠ” λΆ€λΆ„: 동적 μž„ν¬νŠΈμ™€ κ²°ν•©ν•˜μ—¬ 벀더 라이브러리(μ•ˆμ •μ μΈ μ½”λ“œ)λ₯Ό 별도 파일둜 μΊμ‹±ν•˜κ³  κΈ°λŠ₯ λ‹¨μœ„λ‘œ 청크λ₯Ό λ‚˜λˆ„λŠ” μ „λž΅μ„ ν•™μŠ΅ν•  수 μžˆμŠ΅λ‹ˆλ‹€ [8, 16]. ### Deeper Research Questions - 개발 ν™˜κ²½μ˜ λ„€μ΄ν‹°λΈŒ ESM 처리 방식과 ν”„λ‘œλ•μ…˜ ν™˜κ²½μ˜ Rollup λ²ˆλ“€λ§ κ°„μ˜ μ•„ν‚€ν…μ²˜ 차이가 λŸ°νƒ€μž„ λ™μž‘μ΄λ‚˜ λͺ¨λ“ˆ 해석(Module Resolution)에 μ–΄λ–€ 차이와 잠재적 버그λ₯Ό μœ λ°œν•  수 μžˆλŠ”κ°€? - Vite의 `optimizeDeps`λ₯Ό ν†΅ν•œ 사전 λ²ˆλ“€λ§(Pre-bundling) ν”„λ‘œμ„ΈμŠ€λŠ” κ±°λŒ€ν•œ μ™ΈλΆ€ μ˜μ‘΄μ„± νŒ¨ν‚€μ§€λ₯Ό λ‘œλ“œν•  λ•Œ λΈŒλΌμš°μ €μ˜ λ„€νŠΈμ›Œν¬ 병λͺ©μ„ μ–΄λ–»κ²Œ ν•΄κ²°ν•˜λŠ”κ°€? - λŒ€κ·œλͺ¨ React 앱을 λ§ˆμ΄κ·Έλ ˆμ΄μ…˜ ν•  λ•Œ μ»€μŠ€ν…€ Babel ν”ŒλŸ¬κ·ΈμΈμ„ μ‚¬μš© 쀑인 ν™˜κ²½μ—μ„œ SWC 컴파일러(`@vitejs/plugin-react-swc`)둜 μ „ν™˜ν•  λ•Œ λ°œμƒν•˜λŠ” ν˜Έν™˜μ„± ν•œκ³„μ™€ λŒ€μ•ˆμ€ 무엇인가? - `manualChunks`λ₯Ό ν™œμš©ν•΄ 벀더 라이브러리λ₯Ό μ„Έλ°€ν•˜κ²Œ λΆ„ν• ν•  λ•Œ, μƒμ„±λœ ν•΄μ‹œ(hash) 파일λͺ… 기반의 μž₯κΈ° 캐싱(Long-term Caching) λ©”μ»€λ‹ˆμ¦˜μ€ λΈŒλΌμš°μ €μ—μ„œ ꡬ체적으둜 μ–΄λ–»κ²Œ μ΅œμ ν™”λ˜λŠ”κ°€? - `rollup-plugin-visualizer`λ₯Ό ν†΅ν•œ λ²ˆλ“€ μ‹œκ°ν™” 이후, μ˜λ„μΉ˜ μ•Šκ²Œ 메인 청크에 ν¬ν•¨λœ κ³Όλ„ν•œ νŠΈλžœμ§€ν‹°λΈŒ μ˜μ‘΄μ„±(Transitive Dependencies)을 효과적으둜 λΆ„λ¦¬ν•˜λŠ” ꡬ체적인 μ½”λ“œ 레벨 νŒ¨ν„΄μ€ 무엇인가? ### Practical Application Contexts - **Implementation:** `vite.config.js`λ₯Ό κ΅¬μ„±ν•˜μ—¬ `@vitejs/plugin-react-swc`λ₯Ό λ„μž…ν•˜κ³ , μƒλŒ€ 경둜λ₯Ό ν”Όν•˜κΈ° μœ„ν•œ 경둜 별칭(Path Aliases) μ„€μ •, `VITE_` 접두사λ₯Ό μ΄μš©ν•œ μ•ˆμ „ν•œ ν™˜κ²½ λ³€μˆ˜ 바인딩, CORSλ₯Ό μš°νšŒν•˜κΈ° μœ„ν•œ ν”„λ‘μ‹œ(Proxy) 섀정을 μ μš©ν•©λ‹ˆλ‹€ [5, 9, 11]. - **System Design:** λŒ€κ·œλͺ¨ ν”„λ‘ νŠΈμ—”λ“œ μ‹œμŠ€ν…œ 섀계 μ‹œ, 무거운 초기 λ²ˆλ“€ 크기 이슈λ₯Ό λ°©μ§€ν•˜κΈ° μœ„ν•΄ Webpack λŒ€μ‹  Viteλ₯Ό λ„μž…ν•˜κ³  개발(λ„€μ΄ν‹°λΈŒ ESM)κ³Ό ν”„λ‘œλ•μ…˜(Rollup μ΅œμ ν™”)의 ν•˜μ΄λΈŒλ¦¬λ“œ λΉŒλ“œ νŒŒμ΄ν”„λΌμΈμ„ κ΅¬μΆ•ν•©λ‹ˆλ‹€ [2-4, 8]. - **Operation / Maintenance:** `rollup-plugin-visualizer`λ₯Ό λΉŒλ“œ ν”„λ‘œμ„ΈμŠ€μ— 연동해 μ •κΈ°μ μœΌλ‘œ λ²ˆλ“€ 크기λ₯Ό λͺ¨λ‹ˆν„°λ§ν•˜κ³ , `manualChunks`λ₯Ό μœ μ§€λ³΄μˆ˜ν•˜μ—¬ React μ½”μ–΄ 같은 벀더 νŒ¨ν‚€μ§€μ˜ λΈŒλΌμš°μ € 캐싱 이점을 μœ μ§€ν•©λ‹ˆλ‹€ [16-19]. - **Learning Path:** μš°μ„  Vite의 곡식 μŠ€μΊν΄λ“œ 툴둜 React 앱을 μƒμ„±ν•˜μ—¬ κΈ°μ‘΄ CRA(Create React App) κ΅¬μ‘°μ™€μ˜ 차이λ₯Ό μ²΄ν—˜ν•œ ν›„, 동적 μž„ν¬νŠΈ(`React.lazy`)와 `optimizeDeps` λ“±μ˜ κ³ κΈ‰ μ„€μ • 및 ν”ŒλŸ¬κ·ΈμΈ ν™•μž₯을 μ μ§„μ μœΌλ‘œ ν•™μŠ΅ν•©λ‹ˆλ‹€ [6, 7, 10, 16, 20]. - **My Project Relevance:** μ†ŒμŠ€μ— κ΄€λ ¨ 정보가 λΆ€μ‘±ν•©λ‹ˆλ‹€. (개인의 ν˜„μž¬ μ§„ν–‰ 쀑인 νŠΉμ • ν”„λ‘œμ νŠΈμ— λŒ€ν•œ 정보가 μ†ŒμŠ€ ν…μŠ€νŠΈμ— ν¬ν•¨λ˜μ–΄ μžˆμ§€ μ•ŠμŠ΅λ‹ˆλ‹€.) ### Adjacent Topics - React Server Components (RSC) & Next.js App Router - ν™•μž₯ λ°©ν–₯: Viteλ₯Ό μ΄μš©ν•œ λΉŒλ“œ 툴 체인 μ΅œμ ν™”(CSR/SPA μ„±λŠ₯ μ΅œμ ν™”)λ₯Ό λ„˜μ–΄, ν΄λΌμ΄μ–ΈνŠΈ μΈ‘ μžλ°”μŠ€ν¬λ¦½νŠΈ λ²ˆλ“€ 자체λ₯Ό μ „μ†‘ν•˜μ§€ μ•Šκ³  μ„œλ²„μ—μ„œ 미리 λ Œλ”λ§ν•˜λŠ” μ•„ν‚€ν…μ²˜ μˆ˜μ€€μ˜ μ„±λŠ₯ μ΅œμ ν™” νŒ¨λŸ¬λ‹€μž„μœΌλ‘œ 이해λ₯Ό λ„“νž™λ‹ˆλ‹€ [21-23]. - Performance Metrics (Core Web Vitals) - ν™•μž₯ λ°©ν–₯: Vite의 청크 μ΅œμ ν™”μ™€ λ ˆμ΄μ§€ λ‘œλ”© 기법이 μ‹€μ œ μ‚¬μš©μž 체감 μ„±λŠ₯ μ§€ν‘œμΈ FCP(First Contentful Paint), LCP(Largest Contentful Paint), INP(Interaction to Next Paint)에 μ–΄λ–€ 직접적인 영ν–₯을 λ―ΈμΉ˜λŠ”μ§€ μ—°κ²°ν•˜μ—¬ ν•™μŠ΅ν•©λ‹ˆλ‹€ [13, 24, 25]. --- *Last updated: 2026-04-30* ## πŸ€– LLM ν™œμš© 힌트 (How to Use This Knowledge) **μ–Έμ œ 이 지식을 μ“°λŠ”κ°€:** - *(TODO)* **μ–Έμ œ μ“°λ©΄ μ•ˆ λ˜λŠ”κ°€:** - *(TODO)* ## πŸ§ͺ 검증 μƒνƒœ (Validation) - **정보 μƒνƒœ:** needs_review - **좜처 신뒰도:** A - **κ²€ν†  이유:** *(P-Reinforce Phase 1 μžλ™ μ •κ·œν™”. λ³Έλ¬Έ 검증 ν•„μš”.)* ## 🧬 쀑볡 검사 (Duplicate Check) - **κΈ°μ‘΄ μœ μ‚¬ λ¬Έμ„œ:** *(TODO: μΈλ±μ„œ ν΄λŸ¬μŠ€ν„° 리포트 μ°Έμ‘°)* - **처리 방식:** UPDATE (μžλ™ μ •κ·œν™”) - **처리 이유:** Phase 1 μ •κ·œν™” β€” μ˜› ν…œν”Œλ¦Ώ/λˆ„λ½ ν•„λ“œ 보강. ## ⚠️ λͺ¨μˆœ 및 μ—…λ°μ΄νŠΈ (Contradictions & Updates) - **κ³Όκ±° λ°μ΄ν„°μ™€μ˜ 좩돌:** μ—†μŒ - **μ •μ±… λ³€ν™”:** μ—†μŒ ## πŸ•“ λ³€κ²½ 이λ ₯ (Changelog) | λ‚ μ§œ | λ³€κ²½ λ‚΄μš© | 처리 방식 | 신뒰도 | |------|-----------|-----------|--------| | 2026-05-08 | P-Reinforce Phase 1 μ •κ·œν™” (frontmatter + 헀더 ν‘œμ€€ν™”) | UPDATE | A | ## πŸ’» μ½”λ“œ νŒ¨ν„΄ (Code Patterns) **νŒ¨ν„΄ 1:** *(TODO: 이 ν”„λ‘œμ νŠΈ μ»¨λ²€μ…˜ λ°˜μ˜ν•œ ꡬ쑰 μŠ€μΌˆλ ˆν†€)* ```text # TODO ``` ## πŸ€” μ˜μ‚¬κ²°μ • κΈ°μ€€ (Decision Criteria) **선택 Aλ₯Ό 써야 ν•  λ•Œ:** - *(TODO)* **선택 Bλ₯Ό 써야 ν•  λ•Œ:** - *(TODO)* **κΈ°λ³Έκ°’:** > *(TODO)* ## ❌ μ•ˆν‹°νŒ¨ν„΄ (Anti-Patterns) - **[μ•ˆν‹°νŒ¨ν„΄]:** *(TODO: 무엇을 ν•˜λ©΄ μ•ˆ λ˜λŠ”κ°€ + 이유 + λŒ€μ‹  무엇을)*