[JS] 번들러(Bundler)란?

wnsxk2·2024년 12월 18일

💡 개요

프론트엔드 개발에 JSP만 사용하던 내가 React를 배우고 싶어 공부를 시작했다.
React를 공부하는 과정에서 "번들러(Bundler)"라는 용어를 자주 접하게 되어,
이에 대해 개념을 명확히 정리하고자 이 글을 작성했다.

📦 번들러(Bundler)란?

번들러(Bundler)는 여러 개의 파일(HTML, CSS, JS 등)을 하나로 묶어주는 도구이다.

기존에 웹사이트를 배포할 때, HTML, CSS, JavaScript와 같은 다양한 파일을 클라이언트(사용자)에게 개별적으로 전송했다.
그러나 전송해야 할 파일이 많아질수록 네트워크 요청의 수가 늘어나고, 로딩 속도도 느려지는 문제가 발생했다.
이 문제를 해결하기 위해 등장한 것이 바로 번들러이다.

번들러의 역할

  • 여러 파일(HTML, CSS, JS, 이미지 등)을 하나의 파일로 묶어 전송한다.
  • 불필요한 코드를 제거하여 최적화된 코드로 변환한다.
  • 개발 중에 사용한 최신 JavaScript 문법을 구형 브라우저에서도 사용할 수 있도록 변환(트랜스파일링)한다.

결과적으로 로딩 속도를 향상시키고, 파일 관리도 훨씬 용이하게 해준다.

✨ 번들러의 장점

1️⃣ 네트워크 요청 수 감소

  • 기존에는 각 파일마다 개별적인 요청(HTTP Request)이 발생했지만,
    번들러는 여러 파일을 하나로 묶어 단일 요청으로 전송한다.
    로딩 속도 향상에 기여한다.

2️⃣ 코드 최적화 및 파일 크기 감소

  • 사용하지 않는 코드를 자동으로 제거하는 트리 쉐이킹(Tree Shaking)
    코드 중복을 제거하는 코드 스플리팅(Code Splitting)이 적용된다.
    더 작은 파일 크기로 클라이언트에게 전송되므로, 페이지 로딩 속도가 빨라진다.

3️⃣ 최신 자바스크립트 문법 지원

  • ES6+ 문법을 구형 브라우저에서도 사용할 수 있도록 변환(트랜스파일링)해 준다.
    → 개발자는 최신 문법을 사용하고, 구형 브라우저도 호환된다.

🔥 대표적인 번들러의 종류

번들러는 개발 환경에 따라 선택할 수 있으며, 대표적인 번들러에는 Webpack, Parcel, Vite가 있다.

번들러특징
Webpack가장 많이 사용되는 번들러로, 유연하고 확장성이 뛰어나며 플러그인 생태계가 잘 구축되어 있다. 다만, 설정이 다소 복잡할 수 있다.
Parcel설정이 거의 필요 없는 Zero-Config 번들러로, 빠르게 개발 환경을 구축할 수 있다. 간단한 프로젝트에 적합하다.
Vite초고속 빌드 속도를 자랑하는 최근 주목받는 번들러로, 개발 서버의 속도가 매우 빠르다. 주로 모던 프레임워크(React, Vue 등)와 함께 사용된다.

💡 어떤 번들러를 선택할까?

  • 대형 프로젝트: 설정과 최적화가 필요한 대규모 프로젝트라면 Webpack
  • 단순한 프로젝트: 빠르게 개발 환경을 만들고 싶다면 Parcel
  • 최신 프레임워크: 최신 환경에 적합하고 빠른 개발 서버가 필요하다면 Vite

⚙️ 번들러의 동작 원리

번들러는 단순히 파일을 묶는 것만이 아니라,
파일을 분석, 최적화하고, 트랜스파일링 및 코드 스플리팅까지 수행한다.

1️⃣ 모든 파일을 수집한다

  • HTML, CSS, JS, 이미지, 폰트 등 웹 애플리케이션에 필요한 모든 파일을 가져온다.
  • 모듈 간의 의존 관계를 분석하여 의존성 그래프(Dependency Graph)를 만든다.

2️⃣ 의존 관계에 따라 묶는다

  • 필요한 코드만 남기고 불필요한 코드는 제거(트리 쉐이킹)한다.
  • 의존 관계에 따라 필요한 모듈을 묶어 하나의 파일로 압축한다.

3️⃣ 최적화된 파일을 배포한다

  • 최종적으로 최적화된 파일을 생성하여 클라이언트(사용자)에게 전달한다.
  • 필요에 따라 코드를 여러 개로 쪼개는 코드 스플리팅을 수행해,
    필요할 때만 일부 파일을 불러오는 지연 로딩(Lazy Loading)도 가능하게 한다.

🪄 결론

번들러는 웹 개발에서 필수적인 도구로,
웹 사이트의 로딩 속도를 향상시키고 파일 관리의 편의성을 높여준다.

  • 코드 최적화: 트리 쉐이킹, 코드 스플리팅, 트랜스파일링을 통해 불필요한 코드를 제거한다.
  • 개발 편의성: 최신 자바스크립트 문법(ES6+)을 구형 브라우저에서도 사용할 수 있다.
  • 빠른 로딩 속도: 요청 파일의 개수를 줄이고, 필요한 파일만 불러오도록 하여 로딩 속도를 향상시킨다.

📌Reference

0개의 댓글