본문 바로가기
Coding Study/FrontEnd Study Note

webpack, rollup과 같은 번들러는 왜 필요한가

by bell_one 2025. 11. 26.

리액트(또는 현대 프론트엔드) 개발에서 Webpack·Rollup 같은 번들러가 필요한 이유
한 문장으로 말하면:

브라우저가 이해할 수 없는 모듈 시스템·자원들을 하나의 최적화된 형태로 가공해 브라우저에서 동작하도록 만들기 위해서입니다.

 

 

1) 브라우저는 ES 모듈 이전에는 import/export를 이해하지 못했다

프론트엔드 개발자가 작성한 코드는 보통 이런 형태:

import Button from "./components/Button";
import { sum } from "./utils/math";
 

이런 모듈 시스템을 브라우저에서는 과거엔 직접 실행할 수 없었기 때문에,
번들러가 모든 파일을 하나로 묶어서 브라우저가 이해할 수 있는 구조로 만들어줘야 했습니다.

➡️ 여러 JS 파일 → 하나의 bundle.js

 

2) HTML/CSS/JS/이미지 등을 하나의 종속 그래프로 묶어줌

번들러는 모든 파일을 하나의 “그래프”로 보고, 필요한 모든 자원을 가져와 다음을 수행합니다.

  • JS 파일 묶기 (dependency graph 생성)
  • CSS / SCSS / LESS 변환
  • 이미지 압축 및 Base64 인라인
  • 파일 경량화(트리쉐이킹, 중복 제거)

➡️ “하나의 앱을 구성하는 모든 자원을 최적화해 패키징하는 과정”

 

3) 프로덕션 빌드 최적화를 위해

번들러는 단순히 묶는 것뿐만 아니라 성능 최적화를 함께 수행합니다.

✔ Tree Shaking

사용되지 않는 코드를 자동으로 제거.

✔ Minify

코드를 압축해 bundle 크기를 줄임.

✔ Code Splitting

페이지 별로 필요한 코드를 분리해서 초기 로딩 속도를 개선.

➡️ 빠른 로딩 = 더 좋은 UX + SEO + 비용 절감


4) 개발 환경에서 편리한 기능 제공

Webpack Dev Server, Vite Dev Server처럼 개발 중 자동 새로고침 / HMR(Hot Module Replacement)을 제공합니다.

  • 코드 바꾸면 즉시 브라우저 반영
  • 스타일/컴포넌트 수정 시 전체 새로고침 없이 즉시 업데이트

➡️ 개발 속도 대폭 증가


5) 최신 문법 변환(Babel)과의 통합

프론트엔드 코드는 최신 JavaScript 문법(ESNext), TypeScript, JSX 등을 많이 사용합니다.

하지만 브라우저는 모든 최신 문법을 이해하지 못합니다.

그래서 번들러는 Babel·SWC와 함께:

  • JSX → JS로 변환
  • TS → JS로 변환
  • 최신 문법 → 하위 브라우저 호환 코드로 변환

➡️ 개발자는 최신 기술 그대로 사용하고, 번들러가 호환성을 알아서 해결

 

Webpack vs Rollup 간 차이

항목 Webpack Rollup
목적 앱 번들링(웹사이트/SPA) 라이브러리 번들링(패키지 배포)
특징 거대 프로젝트에 강함, 로더와 플러그인 다양 더 작은 번들, Tree shaking 우수
개발 경험 Dev Server, HMR 강력 작은 규모엔 빠름
추천하는 경우 리액트/SPA/대규모 웹앱 npm 패키지, 유틸 라이브러리 배포

 


최종 정리

Webpack·Rollup 같은 번들러가 필요한 이유는:

  • 브라우저가 이해할 수 없는 코드(모듈 시스템, TS, JSX 등)를 변환하기 위해
  • 모든 자원을 하나의 패키지로 최적화하기 위해
  • 성능을 향상시키기 위해
  • 개발 편의를 높이기 위해

즉, 현대 프론트엔드는 빌드 없이 돌아갈 수 없고, 번들러는 빌드의 핵심 엔진 역할을 합니다.