문제: Webpack은 대규모 프로젝트에서 20-30초 빌드, 3-5초 HMR로 개발 경험 저하
해결: Rust 기반 빌드 도구(Vite 6, Rspack)로 10배 빌드 속도 향상
선택 기준: 새 프로젝트 → Vite, 기존 Webpack 설정 유지 필요 → Rspack
핵심: 점진적 마이그레이션으로 리스크 최소화
왜 Rust 빌드 도구인가?
JavaScript 기반 빌드 도구의 한계는 명확했다. 언어 자체의 성능 제약과 단일 스레드 특성으로 인해 프로젝트가 커질수록 빌드 시간이 기하급수적으로 증가했다.
Plain Text
대규모 프로젝트 빌드 시간 비교:Webpack 5: ████████████████████ 20초Vite 5 (esbuild): ████ 4초Vite 6 (Rolldown): ██ 2초Rspack: ██ 2초
Rust는 메모리 안전성을 보장하면서도 C/C++에 준하는 성능을 제공한다. 이 성능 이점이 빌드 도구에 그대로 적용되어, 같은 작업을 10배 이상 빠르게 처리할 수 있게 되었다.
Vite vs Rspack: 어떤 것을 선택할까?
| 기준 | Vite 6 | Rspack |
|------|--------|--------|
| 새 프로젝트 | ✅ 추천 | ○ 가능 |
| Webpack 설정 재사용 | ❌ 새로 작성 | ✅ 거의 그대로 |
| Webpack 플러그인 호환 | ❌ Vite 플러그인 사용 | ✅ 대부분 호환 |
| 개발 서버 방식 | ESM 네이티브 | 번들링 |
| 생태계 성숙도 | 매우 높음 | 높음 |
| 주간 다운로드 | 17M+ | 500K+ |
결론:
새 프로젝트 또는 간단한 설정: Vite
복잡한 Webpack 설정이 있는 기존 프로젝트: Rspack
Vite 마이그레이션 가이드
Step 1: 의존성 설치
Bash
# Vite 및 React 플러그인 설치pnpm add -D vite @vitejs/plugin-react# 선택: TypeScript 지원pnpm add -D @types/node
Step 2: vite.config.ts 작성
TypeScript
// vite.config.tsimport { defineConfig } from 'vite';import react from '@vitejs/plugin-react';import path from 'path';export default defineConfig({ plugins: [ react({ // React 19 Compiler 활성화 (선택) babel: { plugins: [ ['babel-plugin-react-compiler', { runtimeModule: 'react-compiler-runtime' }] ] } })
Step 3: index.html 이동 및 수정
Bash
# public/index.html을 프로젝트 루트로 이동mv public/index.html index.html
| 프로젝트 규모 | Webpack 5 | Vite 6 | Rspack | 개선율 |
|--------------|-----------|--------|--------|--------|
| 50개 파일 | 5초 | 0.8초 | 0.9초 | 83% ↓ |
| 200개 파일 | 12초 | 1.5초 | 1.6초 | 87% ↓ |
| 500개 파일 | 28초 | 2.3초 | 2.1초 | 92% ↓ |
| 1000+ 파일 | 65초 | 4.2초 | 3.8초 | 94% ↓ |
개발 경험 개선:
HMR: 3초 → 50ms (98% 개선)
개발 서버 시작: 8초 → 500ms (93% 개선)
마이그레이션 체크리스트
Markdown
### 사전 준비- [ ] 현재 Webpack 설정 복잡도 파악- [ ] 사용 중인 Webpack 플러그인 목록 정리- [ ] 커스텀 로더 확인- [ ] 환경 변수 목록 정리### Vite 마이그레이션- [ ] vite, @vitejs/plugin-react 설치- [ ] vite.config.ts 작성- [ ] index.html 루트로 이동 및 script 태그 추가- [ ] 환경 변수 REACT_APP_ → VITE_ 변경- [ ] import.meta.env로 접근 방식 변경- [ ] package.json 스크립트 수정- [ ] 개발 서버 테스트- [ ] 프로덕션 빌드 테스트### Rspack 마이그레이션- [ ] webpack 제거, @rspack/cli @rspack/core 설치- [ ] webpack.config.js → rspack.config.ts 변환
마치며
빌드 도구 마이그레이션은 한 번의 노력으로 지속적인 개발 경험 개선을 얻을 수 있는 투자다. Vite나 Rspack으로의 전환은 단순히 빌드 시간만 줄이는 것이 아니라, 개발자의 흐름(flow)을 유지하게 해준다.
HMR이 3초 걸리면 개발자는 흐름이 끊기고, 다른 일을 하다가 돌아오게 된다. 50ms면 코드 저장과 동시에 결과를 확인할 수 있다. 이 차이가 하루에 수백 번 누적되면 생산성의 큰 차이로 이어진다.