도구 | 코어 언어 | 주요 컴파일러 | 개발 서버 모델 | 프로덕션 번들러 |
Vite | JavaScript/TypeScript | esbuild(개발) + Rollup(프로덕션) | 네이티브 ESM 개발 서버, 필요 시(on-demand) 변환 | Rollup(트리 셰이킹, 코드 스플리팅) |
Turbopack | Rust | Rust 기반 증분(incremental) 컴파일러 | Rust에서의 영속 워커 풀, 파일 워칭 | Rust 기반 번들러, Webpack의 모듈 그래프와 유사 |
Rspack | Rust | Rust 기반(Turbopack 포크) | Turbopack과 동일하되 Webpack 호환 API 제공 | Turbopack과 유사, Webpack 플러그인 지원 |
시나리오 | Vite (ms) | Turbopack (ms) | Rspack (ms) |
콜드 dev 서버 시작(React + TS) | ~350 | ~120 | ~130 |
작은 변경 후 HMR(핫 모듈 교체) | ~30 | ~8 | ~9 |
전체 프로덕션 빌드(최적화) | ~1,800 | ~720 | ~750 |
항목 | Vite | Turbopack | Rspack |
첫 안정 릴리스 | 2020 | 2023 (베타) | 2023 (베타) |
공식 문서 깊이 | ★★★★★ | ★★★★☆ | ★★★★☆ |
플러그인 생태계 규모 | 1,200개 이상 | 50개 미만(공식) | ~200개(Webpack 호환) |
커뮤니티 채택(GitHub 스타) | 73k | 12k | 9k |
프로덕션 사용(주요 앱) | Vercel, VuePress, 다수 스타트업 | Meta 내부 도구, Next.js(실험적) | Alibaba, ByteDance, 일부 오픈소스 프로젝트 |
import {defineConfig }from'vite';
importreactfrom'@vitejs/plugin-react';
exportdefaultdefineConfig({
plugins: [react()],
server: {
port:3000,
open:true,
},
build: {
target:'esnext',
sourcemap:true,
},
});import {defineConfig }from'@turbopack/dev-server';
importreactRefreshfrom'@turbopack/react-refresh';
exportdefaultdefineConfig({
entry:'./src/index.tsx',
plugins: [reactRefresh()],
devServer: {
port:3000,
hot:true,
},
optimization: {
minify:true,
target:'es2022',
},
});constReactRefreshWebpackPlugin=require('@pmmmwh/react-refresh-webpack-plugin');
module.exports= {
entry:'./src/index.tsx',
mode:'development',
devServer: {
hot:true,
port:3000,
open:true,
},
module: {
rules: [
{
test:/\.(ts|tsx)$/,
use:'babel-loader',
exclude:/node_modules/,
},
],
},
plugins: [newReactRefreshWebpackPlugin()],
resolve: {
extensions: ['.tsx','.ts','.js'],
},
};