๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
IT

Rollup vs. Webpack: ๋ชจ๋“ˆ ๋ฒˆ๋“ค๋Ÿฌ ๋น„๊ต

by ๐Ÿ’ฒ๐ŸŽตโœ–๏ธโœ”๏ธโ˜ผ 2024. 2. 21.
728x90

Rollup vs. Webpack: ๋ชจ๋“ˆ ๋ฒˆ๋“ค๋Ÿฌ ๋น„๊ต

1. ์†Œ๊ฐœ

1.1 Rollup

Rollup์€ ์ฃผ๋กœ ES6 ๋ชจ๋“ˆ์— ์ค‘์ ์„ ๋‘” JavaScript ๋ชจ๋“ˆ ๋ฒˆ๋“ค๋Ÿฌ์ž…๋‹ˆ๋‹ค. ES6 ๋ชจ๋“ˆ ํ‘œ์ค€์„ ๋”ฐ๋ฅด๊ณ  Tree-shaking๊ณผ ๊ฐ™์€ ์ตœ์ ํ™” ๊ธฐ๋Šฅ์„ ๊ฐ•์กฐํ•ฉ๋‹ˆ๋‹ค. ์ž‘์€ ๊ทœ๋ชจ์˜ ํ”„๋กœ์ ํŠธ ๋˜๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ๋ฒˆ๋“ค๋ง์— ํŠนํžˆ ์ ํ•ฉํ•ฉ๋‹ˆ๋‹ค.

1.2 Webpack

Webpack์€ ์ดˆ๊ธฐ์— ๋ชจ๋“ˆ ๋ฒˆ๋“ค๋Ÿฌ๋กœ ๋“ฑ์žฅํ•˜์—ฌ JavaScript๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ์ด๋ฏธ์ง€, CSS ๋“ฑ ๋‹ค์–‘ํ•œ ๋ฆฌ์†Œ์Šค๋“ค์„ ํšจ๊ณผ์ ์œผ๋กœ ๋ฒˆ๋“ค๋งํ•  ์ˆ˜ ์žˆ๋Š” ๊ฐ•๋ ฅํ•œ ๋„๊ตฌ์ž…๋‹ˆ๋‹ค. ๋Œ€๊ทœ๋ชจ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋ฐ ๋ณต์žกํ•œ ํ”„๋กœ์ ํŠธ์— ์ ํ•ฉํ•œ ๋ชจ๋“ˆ ๋ฒˆ๋“ค๋Ÿฌ์ž…๋‹ˆ๋‹ค.

2. ์ฃผ์š” ์ฐจ์ด์ 

2.1 ๋ชจ๋“ˆ ํ˜•์‹

  • Rollup: ์ฃผ๋กœ ES6 ๋ชจ๋“ˆ์— ์ค‘์ ์„ ๋‘๋ฉฐ, ํ‘œ์ค€์„ ๋”ฐ๋ฅด๊ณ  Tree-shaking์„ ํ†ตํ•ด ๋ถˆํ•„์š”ํ•œ ์ฝ”๋“œ๋ฅผ ํšจ๊ณผ์ ์œผ๋กœ ์ œ๊ฑฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • Webpack: CommonJS, AMD, UMD์™€ ๊ฐ™์€ ๋‹ค์–‘ํ•œ ๋ชจ๋“ˆ ํ˜•์‹์„ ์ง€์›ํ•˜๋ฉฐ, ๋‹ค์–‘ํ•œ ๋กœ๋”(loader)๋ฅผ ํ†ตํ•ด ๋‹ค์–‘ํ•œ ์œ ํ˜•์˜ ๋ชจ๋“ˆ์„ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

2.2 ์ตœ์ ํ™”

  • Rollup: Tree-shaking์„ ํ†ตํ•ด ์‚ฌ์šฉ๋˜์ง€ ์•Š๋Š” ์ฝ”๋“œ ์ œ๊ฑฐ, ์ฝ”๋“œ ์ตœ์ ํ™”์— ๊ฐ•์ ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ES6 ๋ชจ๋“ˆ์„ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•œ ๋ฒˆ๋“ค๋ง์ด๋ฏ€๋กœ ์ž‘์€ ๋ฒˆ๋“ค ์‚ฌ์ด์ฆˆ๋ฅผ ์œ ์ง€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • Webpack: Code splitting, ๊ฒฝ๋กœ ๊ธฐ๋ฐ˜์˜ ์ฝ”๋“œ ์ตœ์ ํ™”, ๋‹ค์–‘ํ•œ ํ”Œ๋Ÿฌ๊ทธ์ธ์„ ํ†ตํ•œ ์ตœ์ ํ™” ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ๋ถˆํ•„์š”ํ•œ ์ฝ”๋“œ๊ฐ€ ๋ฒˆ๋“ค์— ํฌํ•จ๋˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

2.3 ์„ค์ •

  • Rollup: ์ดˆ๊ธฐ ์„ค์ •์ด ๋‹ค์†Œ ๊ฐ„๋‹จํ•˜๋ฉฐ, ์ˆœ์ˆ˜ JavaScript ๊ตฌ์„ฑ ํŒŒ์ผ์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ์„ค์ •์ด ๋” ์ง๊ด€์ ์ด์ง€๋งŒ ํ™•์žฅ์„ฑ์€ ์ƒ๋Œ€์ ์œผ๋กœ ๋‚ฎ์Šต๋‹ˆ๋‹ค.
  • Webpack: ์„ค์ •์ด ๋ณต์žกํ•˜๊ณ  ํ•™์Šต ๊ณก์„ ์ด ๋†’์„ ์ˆ˜ ์žˆ์œผ๋ฉฐ, ๋ณ„๋„์˜ ์„ค์ • ํŒŒ์ผ์„ ์ž‘์„ฑํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋†’์€ ํ™•์žฅ์„ฑ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

2.4 ํ”Œ๋Ÿฌ๊ทธ์ธ

  • Rollup: ํ”Œ๋Ÿฌ๊ทธ์ธ ์‹œ์Šคํ…œ์„ ํ†ตํ•ด ํ•„์š”ํ•œ ๊ธฐ๋Šฅ์„ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํ”Œ๋Ÿฌ๊ทธ์ธ์˜ ์ƒํƒœ๊ณ„๋Š” Webpack๋ณด๋‹ค๋Š” ์ž‘์ง€๋งŒ, ๊ฐ„๋‹จํ•˜๊ฒŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ํ”Œ๋Ÿฌ๊ทธ์ธ์ด ๋งŽ์Šต๋‹ˆ๋‹ค.
  • Webpack: ๋กœ๋”(loader)์™€ ํ”Œ๋Ÿฌ๊ทธ์ธ์„ ํ†ตํ•ด ๋‹ค์–‘ํ•œ ๊ธฐ๋Šฅ์„ ํ™•์žฅํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋‹ค์–‘ํ•œ ํ”Œ๋Ÿฌ๊ทธ์ธ์„ ์‚ฌ์šฉํ•˜์—ฌ ๋ฒˆ๋“ค๋ง ๊ณผ์ •์„ ์„ธ๋ฐ€ํ•˜๊ฒŒ ์ œ์–ดํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

3. ์–ด๋–ค ์ƒํ™ฉ์—์„œ ์‚ฌ์šฉํ• ๊นŒ?

3.1 Rollup

  • ES6 ๋ชจ๋“ˆ์„ ์‚ฌ์šฉํ•˜๊ณ  ์ž‘์€ ๊ทœ๋ชจ์˜ ํ”„๋กœ์ ํŠธ ๋˜๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ๊ฐœ๋ฐœํ•  ๋•Œ.
  • Tree-shaking์„ ํ†ตํ•œ ์ฝ”๋“œ ์ตœ์ ํ™”๊ฐ€ ์ค‘์š”ํ•œ ๊ฒฝ์šฐ.

3.2 Webpack

  • ๋‹ค์–‘ํ•œ ๋ชจ๋“ˆ ํ˜•์‹์„ ์‚ฌ์šฉํ•˜๊ฑฐ๋‚˜, ์ฝ”๋“œ ๋ถ„ํ•  ๋ฐ ๋‹ค์–‘ํ•œ ์ตœ์ ํ™” ๊ธฐ๋Šฅ์ด ํ•„์š”ํ•œ ๊ฒฝ์šฐ.
  • ๋Œ€๊ทœ๋ชจ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋˜๋Š” ๋ณต์žกํ•œ ํ”„๋กœ์ ํŠธ๋ฅผ ๊ฐœ๋ฐœํ•  ๋•Œ.

4. ๊ฒฐ๋ก 

Rollup๊ณผ Webpack์€ ๊ฐ๊ฐ์˜ ๊ฐ•์ ์„ ๊ฐ€์ง€๊ณ  ์žˆ์œผ๋ฉฐ ํ”„๋กœ์ ํŠธ์˜ ์š”๊ตฌ ์‚ฌํ•ญ ๋ฐ ๊ทœ๋ชจ์— ๋”ฐ๋ผ ์„ ํƒ๋˜์–ด์ ธ์•ผ ํ•ฉ๋‹ˆ๋‹ค. Rollup์€ ES6 ๋ชจ๋“ˆ์˜ ํ‘œ์ค€์„ ๋”ฐ๋ฅด๊ณ  ๊ฐ„๋‹จํ•œ ์„ค์ •์œผ๋กœ ๋น ๋ฅด๊ฒŒ ์‹œ์ž‘ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. Webpack์€ ๋‹ค์–‘ํ•œ ๋ชจ๋“ˆ ํ˜•์‹๊ณผ ๊ฐ•๋ ฅํ•œ ์ตœ์ ํ™” ๊ธฐ๋Šฅ์„ ํ†ตํ•ด ๋ณต์žกํ•œ ํ”„๋กœ์ ํŠธ์— ์ ํ•ฉํ•ฉ๋‹ˆ๋‹ค. ํ”„๋กœ์ ํŠธ์˜ ํŠน์„ฑ์„ ๊ณ ๋ คํ•˜์—ฌ ์ ์ ˆํ•œ ๋„๊ตฌ๋ฅผ ์„ ํƒํ•˜์„ธ์š”.

๋Œ“๊ธ€