Rolldown·Rollup·esbuild 차이: Vite 프로젝트에서 무엇을 선택할까

요약: Vite 프로젝트는 무엇을 골라야 할까?

  • 일반적인 Vite 앱은 번들러를 수동 교체하기보다 현재 Vite가 지원하는 기본 경로를 따르는 편이 안전하다.
  • Rollup은 라이브러리의 여러 출력 형식과 세밀한 코드 분할, 성숙한 플러그인 생태계가 필요할 때 강하다.
  • esbuild는 빠른 JavaScript·TypeScript 변환과 단순한 번들 단계에 강하다.
  • Rolldown은 Rollup/Vite 호환성과 esbuild에 가까운 기능·성능 범위를 한 기반으로 묶으려는 Rust 기반 도구다.
  • 속도 비교표만 보고 옮기지 말고 플러그인, 소스맵, 동적 import, CSS와 자산 결과를 저장소에서 비교해야 한다.

Vite와 번들러는 같은 말이 아니다

Vite는 개발 서버, HMR, 플러그인, 프로덕션 빌드를 묶는 개발 경험이다. Rollup·esbuild·Rolldown은 모듈을 분석해 변환하고 출력물을 만드는 엔진이다. 따라서 Vite를 쓴다고 해서 각 엔진의 설정을 직접 관리해야 하는 것은 아니다.

Rolldown은 Vite가 전통적으로 함께 사용한 esbuild와 Rollup의 역할을 하나의 기반 도구로 통합하는 것을 목표로 한다. 일반적인 앱에서는 “Rollup을 직접 Rolldown으로 바꾸기”보다, 설치한 Vite 버전의 지원 상태를 먼저 확인하는 편이 낫다.

Rollup: 출력물을 세밀하게 통제할 때

Rollup은 ES 모듈 중심 번들러다. ESM·CJS·UMD 같은 여러 출력 형식, 코드 분할, 깊은 실행 경로 분석 기반의 트리 셰이킹, 폭넓은 플러그인 API가 강점이다. 라이브러리를 여러 환경에 배포하거나 특수한 출력 규칙이 있을 때 잘 맞는다.

그 자유도는 운영 비용이기도 하다. 단순한 앱에서 Rollup 설정을 처음부터 쌓으면, Vite 같은 상위 도구가 이미 해결한 개발 서버·HMR·기본 최적화를 다시 떠안게 될 수 있다.

esbuild: 빠른 변환 엔진

esbuild는 빠른 JavaScript·TypeScript 변환과 번들링에 널리 쓰인다. 도구 내부에서 코드를 빠르게 처리하거나 단순한 빌드 단계를 만들 때 좋은 선택이다. 다만 복잡한 라이브러리 배포나 특수한 플러그인·출력 요구는 다른 도구와 조합해야 할 수 있다. esbuild를 “모든 배포 문제를 해결하는 만능 번들러”로 보면 판단이 흐려진다.

Rolldown: 호환성과 통합을 노린 선택지

Rolldown은 Rust로 작성됐고 Rollup/Vite 플러그인 API 호환을 목표로 한다. 공식 문서에는 TypeScript·JSX 변환, Node 호환 모듈 해석, ESM/CJS 상호운용, 코드 분할이 내장 범위로 제시된다. Rollup 플러그인을 많이 재사용할 수 있도록 설계한 점은 전환 비용을 낮추려는 장점이다.

하지만 호환성은 각 프로젝트의 보증서가 아니다. 오래된 플러그인, 비표준 빌드 훅, 자산 처리, 소스맵은 실제 결과물로 확인해야 한다.

상황우선 검토이유
일반적인 Vite 애플리케이션Vite 기본 경로개발 서버·HMR·플러그인이 함께 통합된다
라이브러리 다중 포맷 배포Rollup출력과 코드 분할, 플러그인 제어가 성숙했다
빠른 변환·단순 도구esbuild빠른 컴파일과 번들링에 적합하다
Vite 호환 통합 성능 평가RolldownRollup/Vite API 호환과 통합 범위를 목표로 한다

교체 전 체크리스트

  1. 플러그인별 변환 결과와 훅 순서를 테스트한다.
  2. ESM/CJS, 동적 import, 소스맵, CSS, 자산 경로를 기존 결과와 비교한다.
  3. 로컬 한 번의 시간 대신 캐시 없는 CI 빌드와 재현성을 측정한다.
  4. 별도 CI 잡에서 결과물을 비교한 뒤 기본 빌드 경로를 바꾼다.

결론

대부분의 앱은 Vite의 통합 흐름을 유지하는 편이 낫다. 라이브러리 출력 제어가 중요하면 Rollup, 빠른 변환이 필요하면 esbuild, 두 영역의 통합 가능성을 검토한다면 Rolldown이 후보가 된다. 최종 선택은 벤치마크 숫자가 아니라 자신의 플러그인과 산출물을 통과시킨 결과로 내려야 한다.


출처

koen