끄적끄적 코딩
article thumbnail
728x90

서론

최근 다양한 프론트엔드 도구들이 등장하면서 기존에 사용하던 번들러들의 구조와 역할에 대한 이해도 중요해졌습니다. 특히 Vite는 빠르다는 인상을 주는 도구로 많이 소개되고 있는데, 실제로 사용해보니 Webpack과는 체감되는 속도 차이가 있었습니다. 어떻게 이런 차이를 만들어내는지 궁금해졌고 Webpack과 비교하면서 Vite의 동작 방식을 정리해보게 되었습니다.

https://deku.posstree.com/ko/react/vite/react-typescript/start/


번들러가 필요한 이유

브라우저가 ES Modules을 네이티브로 지원하기 전까지는 자바스크립트 모듈을 브라우저에서 직접 실행할 수 없었습니다. 그래서 여러 모듈을 하나의 파일로 묶는 번들링이 필요했고, 이를 자동으로 처리해주는 도구들이 등장했습니다. Webpack, Rollup, Parcel 등이 대표적인 예입니다.

https://subtlething.tistory.com/116

 

 

이러한 번들러들은 프론트엔드 개발의 생산성을 높여주었지만, 애플리케이션 규모가 커지고 모듈 수가 수천 개에 이르면서 성능 병목 문제가 발생하기 시작했습니다. 개발 서버가 실행되기까지 시간이 오래 걸리거나, 코드 변경 시 반영되는 속도가 느려지는 등 피드백 루프가 길어졌습니다. 이런 문제들을 해결하고자 등장한 도구가 바로 Vite였습니다.


Vite의 장단점

장점

  • 빠른 개발 서버 구동: 의존성과 소스코드를 분리하여 처리하고, esbuild를 활용해 빠른 속도로 서버를 시작할 수 있습니다.
  • 빠른 HMR(Hot Module Replacement): 변경된 모듈만 교체하는 구조로, 앱 크기와 관계없이 일정한 반응 속도를 유지할 수 있습니다.
  • Rollup 기반 프로덕션 빌드: 개발 환경은 esbuild, 프로덕션 빌드는 Rollup으로 최적화된 결과물을 생성합니다.
  • 간결한 설정과 프레임워크 친화성: Vue, React, Svelte 등과 쉽게 연동되며, 기본 설정만으로도 바로 프로젝트를 시작할 수 있습니다.

단점

  • 빌드 설정 유연성: 프로덕션 빌드에서 사용하는 Rollup은 경우에 따라 설정이 복잡하게 느껴질 수 있으며, polyfill이나 외부 모듈 처리에 신경을 써야 할 때도 있습니다.
  • 플러그인 및 레퍼런스 다양성: Webpack에 비해 상대적으로 오래된 프로젝트나 특정 환경을 위한 플러그인, 문서, 커뮤니티 자료가 적게 느껴질 수 있습니다.
  • 도입 적합성: 빠른 개발 환경과 단순한 설정이 장점이지만, 복잡한 빌드 구조나 레거시 시스템에서는 Webpack이 더 적합한 선택이 될 수 있습니다.

Webpack과 Vite 비교

항목 Webpack Vite
트랜스파일러 Babel (느리지만 유연함) esbuild (매우 빠름)
번들링 시점 전체 번들 후 서버 실행 요청 시 모듈 단위 처리 (on-demand)
개발 서버 속도 느림 빠름
HMR 전체 영향, 대규모 프로젝트에서 느림 모듈 단위 갱신, 빠름
설정 복잡도 유연하지만 복잡함 간단하고 직관적, 기본 설정만으로 시작 가능
빌드 툴 Webpack 자체 Rollup 기반
CommonJS 호환성 기본적으로 강함 일부 라이브러리 호환성 이슈, 설정 필요
플러그인 생태계 방대하고 다양한 환경을 커버함 빠르게 성장 중이나 일부 고급 기능은 부족함
빌드 유연성 복잡한 설정과 세밀한 제어에 강함 기본적인 빌드는 간편하지만 복잡한 요구에는 한계 있음


프로젝트를 Vite로 바꿔야 할까?

Vite는 빠르고 가볍지만, 기존 Webpack 프로젝트를 무조건 Vite로 바꾸는 것은 쉬운 일이 아닐 수 있습니다.

  • Rollup은 CommonJS, polyfill 등을 처리하려면 추가적인 플러그인 설정이 필요합니다.
  • 개발 환경과 프로덕션 빌드 환경의 설정 방식이 다르기 때문에, 처음 사용할 때 혼란스러울 수도 있습니다.

그래서 이미 안정적으로 운영되고 있는 Webpack 프로젝트라면 무리해서 마이그레이션하기보다는, 기존 설정을 잘 최적화하는 것도 좋은 선택이라고 생각합니다. 하지만 새로 프로젝트를 시작하거나 빠른 피드백 루프가 중요한 경우에는 Vite를 적극적으로 고려해볼 만하다고 느꼈습니다.


마무리

Vite는 빠른 개발 서버 구동, 효율적인 HMR, Rollup 기반 빌드, 간결한 설정 등 여러 측면에서 프론트엔드 개발 흐름에 잘 맞는 도구입니다. 특히 의존성과 소스코드를 분리해 처리하는 구조는 기존 번들러와 차별점을 보여줍니다.

Webpack과는 서로 다른 방식으로 문제를 해결해나가는 도구이기 때문에, 어떤 것이 더 낫다고 단정짓기보다는 프로젝트의 성격에 따라 적절한 도구를 선택하는 것이 중요하다고 느꼈습니다.

검색 태그