Vite
비트
차세대 프론트엔드 빌드 도구. ES 모듈 기반. Webpack보다 빠름.
비트
차세대 프론트엔드 빌드 도구. ES 모듈 기반. Webpack보다 빠름.
Vite(프랑스어로 '빠른')는 Evan You(Vue.js 창시자)가 만든 차세대 프론트엔드 빌드 도구입니다. 개발 시에는 네이티브 ES 모듈을 활용해 번들링 없이 즉시 서버를 시작하고, 프로덕션 빌드는 Rollup으로 최적화된 번들을 생성합니다.
Vite가 빠른 이유는 두 가지입니다. 첫째, 개발 서버가 모든 모듈을 미리 번들링하지 않고 브라우저가 요청할 때 변환합니다. 둘째, esbuild(Go로 작성)를 사용해 의존성 사전 번들링과 TypeScript 변환을 수행합니다. 이로써 콜드 스타트가 수십 배 빨라집니다.
Vite는 프레임워크에 구애받지 않습니다. Vue, React, Svelte, Solid, Preact 등 다양한 템플릿을 공식 지원하며, SvelteKit, Nuxt 3, Astro 등 주요 메타 프레임워크도 Vite 기반입니다. 플러그인 시스템은 Rollup과 호환되어 생태계가 풍부합니다.
실무에서 Vite는 새 프로젝트의 사실상 표준이 되었습니다. Webpack 대비 설정이 간단하고, HMR이 밀리초 단위로 빠르며, TypeScript와 CSS 모듈을 기본 지원합니다. create-vite로 프로젝트를 생성하면 최적의 설정이 자동 적용됩니다.
# Vite 프로젝트 생성
npm create vite@latest my-app -- --template react-ts
cd my-app && npm install && npm run dev
# vite.config.ts - 기본 설정
import { defineConfig } from 'vite'
import react from '@vitejs/plugin-react'
export default defineConfig({
plugins: [react()],
server: {
port: 3000,
proxy: {
'/api': {
target: 'http://localhost:8080',
changeOrigin: true
}
}
},
build: {
rollupOptions: {
output: {
manualChunks: {
vendor: ['react', 'react-dom'],
utils: ['lodash-es', 'date-fns']
}
}
}
},
resolve: {
alias: {
'@': '/src'
}
}
})
# 환경 변수 사용 (.env)
VITE_API_URL=https://api.example.com
# 코드에서 사용
const apiUrl = import.meta.env.VITE_API_URL;
"새 프로젝트는 Vite로 시작하죠. npm create vite로 템플릿 선택하면 TypeScript, ESLint 설정이 다 되어 있어요. Webpack처럼 복잡한 설정 파일 만들 필요 없이 바로 개발 시작할 수 있습니다."
"Vite는 개발 시 ES 모듈을 브라우저에 직접 제공하고, 의존성만 esbuild로 사전 번들링합니다. Webpack처럼 전체 앱을 번들링하지 않아서 콜드 스타트와 HMR이 빠릅니다. 프로덕션은 Rollup으로 Tree Shaking과 코드 스플리팅을 적용합니다."
"CRA에서 Vite로 마이그레이션하면 개발 서버 시작이 몇 초에서 밀리초로 줄어요. 다만 Webpack 전용 플러그인이 있다면 Vite 대체제를 찾거나 직접 플러그인을 작성해야 할 수 있어요."
Vite는 ES 모듈 기반입니다. require()나 CommonJS 전용 패키지는 의존성 사전 번들링으로 변환되지만, 일부는 수동 설정이 필요할 수 있습니다.
클라이언트 코드에서 사용할 환경 변수는 반드시 VITE_로 시작해야 합니다. 그렇지 않으면 빌드 시 노출되지 않습니다.
optimizeDeps로 문제 있는 의존성을 명시적으로 포함/제외하고, alias로 경로를 단순화하세요. Rollup 플러그인도 대부분 그대로 사용 가능합니다.