들어가며: Vite란
웹 개발을 위한 빠르고 경량한 빌드 도구입니다. 자바스크립트 네이티브 모듈을 기반으로 한 데브 서버입니다. 웹팩을 중심으로 구축된 개발환경과 배포시스템 을 사용할때 보다 훨씬 더 빠르게 개발하고 배포할 수 있기 때문에 주요 프레임워크 커뮤니티에서 주목 받고 있는 Build Tool 입니다. 아래에서는 어떤방식으로 기존 개발 시스템보다 더 빠르게 개발이 가능한지 알아보도록 하겠습니다.
Vite 특징
- 빠른 초기 로딩: Vite는 ES 모듈 번들링과 브라우저의 내장 모듈 로딩 기능을 활용하여 초기 로딩 속도를 획기적으로 개선했습니다. 이는 개발 서버가 빠르게 시작되고 애플리케이션의 초기 로딩이 빠르게 이루어짐을 의미합니다.
- 핫 모듈 리플레이스먼트 (HMR): Vite는 코드 수정 시 브라우저를 새로 고침하지 않고도 변경 사항을 실시간으로 반영할 수 있는 HMR을 제공합니다. 이는 개발자가 실시간으로 코드 수정 결과를 확인하면서 개발할 수 있도록 도와줍니다.
- 플러그인 시스템: Vite는 다양한 플러그인을 활용하여 프로젝트에 필요한 기능을 손쉽게 추가할 수 있습니다. 플러그인을 통해 CSS, 이미지 최적화, 프론트엔드 프레임워크 통합 등 다양한 작업을 자동화할 수 있습니다.
- 간단한 설정: Vite는 간단한 설정 파일을 사용하여 프로젝트를 시작할 수 있어 초보자에게도 친숙합니다. 초기 설정이 간단하고 직관적이므로 빠르게 개발을 시작할 수 있습니다.
- 웹 브라우저 호환성: Vite는 모던 브라우저와의 호환성을 강조하며, ES 모듈을 지원하는 브라우저에서 최적의 성능을 발휘합니다. 이를 통해 사용자 경험을 향상시킬 수 있습니다.
- 다중 프레임워크 지원: 초기에는 Vue.js를 위해 만들어진 Vite이었지만, 현재는 다양한 프레임워크 및 라이브러리와도 통합되고 있어 Angular, React, Svelte 등 다른 프레임워크와 함께 사용할 수 있습니다.
Vite와 웹팩의 차이점
- 번들링 방식: Vite는 ES 모듈 번들링을 사용하며, 브라우저에서 필요한 파일만 로딩합니다. 반면 웹팩은 CommonJS나 AMD와 같은 다른 모듈 시스템을 사용하고 모든 코드를 번들링합니다.
- 개발 서버 성능: Vite는 개발 서버에서 빠른 초기 로딩과 핫 모듈 리플레이스먼트(HMR)를 제공하여 개발 중에도 빠른 반응을 보장합니다. 웹팩은 개발 서버의 성능이 Vite에 비해 떨어질 수 있습니다.
- 플러그인 생태계: Vite는 플러그인 시스템을 통해 다양한 기능을 확장할 수 있습니다. 웹팩도 플러그인을 지원하지만 Vite의 플러그인 생태계는 더욱 활발하게 발전하고 있습니다.
- 설정 및 기본값: Vite는 간단한 설정으로 시작할 수 있어 초보자에게 친화적입니다. 반면 웹팩은 복잡한 설정이 필요한 경우가 많아 초기 설정이 어려울 수 있습니다.
Vite 사용시 고려사항
- 성숙도: Vite는 비교적 새로운 도구이며, 아직까지 웹팩과 같이 성숙한 생태계를 갖추지 못했습니다. 따라서 특정 플러그인이나 라이브러리의 지원이 부족할 수 있습니다.
- 커스터마이징 복잡성: Vite는 간단한 설정으로 시작할 수 있지만, 프로젝트가 복잡해질수록 복잡한 설정이 필요할 수 있습니다. 이를 해결하기 위해서는 추가적인 학습이 필요할 수 있습니다.
- 프로덕션 빌드 복잡성: Vite의 프로덕션 빌드 설정은 초기에 이해하기 어려울 수 있으며, 특히 큰 프로젝트에서 최적화된 설정을 만들기 위해서는 추가 작업이 필요할 수 있습니다.
- 플러그인 호환성: 플러그인 간의 충돌 또는 버전 호환성 문제가 발생할 수 있으며, 이를 해결하기 위해서는 플러그인 관리에 주의가 필요합니다.
사용후기
프론트엔드 개발 툴들은 정말 빠르고 다양한것들이 많이 나오는것 같다. 그래도 커뮤니티에서 주목하는 개발 툴들을 한번쯤은 사용해 보고 싶은 마음이 있어서 Vite 또한 짧게나마 사용해 보구 후기를 작성해 본다.
Vite 같은 경우는 CRA와 같은 웹팩 기반 프로젝트와 비교 했을때 서버가 정말 빨리 켜진다. 또한 빌드 속도도 엄청 나게 빠르게다. 작은 단위 규모의 프로젝트를 하기에는 정말 적합하고 좋은것 같다.
다만, 모든 상황에 유일 최선의 방법이란 존재하지 않는것처럼 웹 개발자로써 알맞은 상황에 맞게 빌드 도구들을 선택할 수 있는 능력이 중요하다고 생각된다.