2025. 2. 10. 17:51ㆍFrontend Development/React
시작하며
최근 프론트엔드 작업을 시작하면서 React 프로젝트를 진행하려고 했는데요. 당연히 CRA(Create React App)를 사용할 생각이었어요. 그런데 관련 정보를 찾아보니 최근에는 Vite를 많이 사용한다는 걸 알게 되었어요.
그렇다면, 왜 개발자들은 Vite를 선택하는 걸까요? 이에 대한 궁금증을 해결하기 위해 Vite와 CRA의 차이점을 조사해 보았습니다.
1. Vite의 탄생 배경
Vite는 기존의 번들러(Webpack, Parcel 등)의 성능 문제를 해결하기 위해 탄생한 차세대 프론트엔드 빌드 도구입니다.
Webpack을 비롯한 기존 번들러는 JavaScript 파일을 하나로 묶는 방식을 사용해서 초기 빌드 시간이 길고, 코드 변경 시 전체 번들을 다시 컴파일해야 하는 비효율적인 구조를 가지고 있습니다.
Vite는 이런 문제를 해결하기 위해 ES Module (ESM) 기반의 개발 서버와 빠른 빌드 시스템을 도입했는데요. 개발 중 변경된 코드만 즉시 반영하는 방식으로 속도를 대폭 향상시켰고, 프로덕션 빌드에서는 Rollup을 활용해 최적화된 번들을 생성해요.
Rollup은 모듈 번들러로, 불필요한 코드를 제거하고 코드 스플리팅을 통해 보다 가벼운 번들을 만들 수 있도록 도와줍니다. 또한, Tree Shaking 기능을 제공하여 사용되지 않는 코드를 자동으로 제거해 성능을 극대화할 수 있습니다.
덕분에 개발 속도가 빠르고 유지보수가 쉬운 환경을 제공합니다.
2. Vite의 역할
Vite는 크게 두 가지 역할을 수행합니다.
1️⃣ 개발 서버 역할
- 개발 환경에서 빠른 HMR (Hot Module Replacement) 제공
- 변경된 파일만 즉시 반영하여 빠른 피드백 가능
- esbuild를 활용하여 TypeScript, JSX 변환 속도 최적화
2️⃣ 프로덕션 빌드
- Rollup을 활용하여 최적화된 정적 파일을 생성
- 코드 스플리팅 및 트리 쉐이킹을 통해 최적의 번들 크기 유지
- 빠르고 가벼운 배포 파일 생성
3. Vite의 장점
Vite는 CRA보다 여러 가지 강력한 장점을 가지고 있습니다.
✅ 1. 빠른 개발 서버 시작 속도
- Vite는 ES Module을 기반으로 하여 서버 시작 시간이 매우 빠릅니다.
- Webpack 기반의 CRA보다 훨씬 가볍고 빠르게 실행됩니다.
✅ 2. 효율적인 HMR(Hot Module Replacement)
- 변경된 코드만 빠르게 반영하여 개발 속도가 향상됩니다.
- Webpack보다 HMR이 더욱 빠르고 안정적입니다.
✅ 3. 최적화된 프로덕션 빌드
- Rollup을 활용하여 코드 스플리팅, 트리 쉐이킹 등을 통해 최적화된 빌드가 가능합니다.
- Webpack보다 빌드 속도가 빠르고, 결과물 크기가 작습니다.
✅ 4. 간편한 설정 및 플러그인 지원
- vite.config.js 파일을 통해 직관적으로 설정을 조정할 수 있습니다.
- 다양한 플러그인을 활용하여 기능을 확장할 수 있습니다.
4. Vite의 단점
Vite는 CRA보다 성능이 뛰어나지만, 몇 가지 단점도 있습니다.
❌ 1. CommonJS(CJS) 지원 부족
- Vite는 ESM을 기본으로 사용하기 때문에 일부 오래된 CommonJS 라이브러리와 호환성이 떨어질 수 있어요.
- 해결책: vite-plugin-commonjs 같은 플러그인 활용.
❌ 2. CSR(Client-Side Rendering) 위주
- 기본적으로 SPA(Single Page Application) 형태의 프로젝트를 지원하고, Next.js처럼 SSR(Server-Side Rendering)을 기본 제공하지 않아요.
- 해결책: vite-plugin-ssr 플러그인 활용.
❌ 3. Proxy 설정이 CRA보다 다소 복잡
- CRA는 react-scripts에서 간단한 API 프록시 설정을 제공하는데요, Vite는 직접 vite.config.js에서 설정해야 해요.
- 해결책: server.proxy 설정을 활용하여 백엔드 API 연동.
5. Vite + React vs CRA 성능 비교
Vite와 CRA의 성능을 비교하기 위해 프로젝트 생성 시간, 개발 서버 실행 속도, HMR 적용 속도를 측정해 봤습니다.
📊 성능 비교 결과
비교 항목Vite + ReactCRA (Create React App)
프로젝트 생성 시간 | 3.5초 | 49.2초 |
개발 서버 시작 시간 | 0.7초 | 10.5초 |
HMR 적용 속도 | 50ms | 1200ms |
Vite가 CRA보다 최대 14배 빠르게 프로젝트를 생성하고, HMR 속도는 24배 더 빠르네요.
6. Vite를 통해 React 프로젝트 만드는 방법
1️⃣ Vite + React 프로젝트 생성
npm create vite@latest my-vite-project --template react
또는 TypeScript 지원을 포함하려면:
npm create vite@latest my-vite-project --template react-ts
2️⃣ 패키지 설치 및 개발 서버 실행
cd my-vite-project
npm install # 패키지 설치
npm run dev # 개발 서버 실행 (기본 포트: 5173)
3️⃣ Vite 프로젝트 폴더 구조
my-vite-project/
├── public/
├── src/
│ ├── assets/
│ ├── components/
│ ├── App.jsx
│ ├── main.jsx
│ ├── index.css
├── .gitignore
├── index.html
├── package.json
├── vite.config.js
4️⃣ 빌드 및 배포
npm run build # 프로덕션 빌드 실행
마무리
자세한 내용은 Vite 공식 한글 문서인 Vite 가이드를 참고하세요.
Vite는 기존 CRA보다 빠르고 가벼운 개발 환경을 제공하는데요. 특히 SPA(Single Page Application) 프로젝트에서는 Vite가 CRA보다 훨씬 유리해요.
CRA에서 Vite로의 전환을 고민하고 있다면, 위의 성능 비교와 사용 방법을 참고해서 좀 더 빠르고 효율적인 개발 환경을 구축해 보세요.