esbuild๋Š” Go ์–ธ์–ด๋กœ ์ž‘์„ฑ๋œ ์ดˆ๊ณ ์† JavaScript/TypeScript ๋ฒˆ๋“ค๋Ÿฌ์ด์ž ํŠธ๋žœ์ŠคํŒŒ์ผ๋Ÿฌ๋‹ค. ๊ธฐ์กด JS ๊ธฐ๋ฐ˜ ๋นŒ๋“œ ๋„๊ตฌ ๋Œ€๋น„ 10~100๋ฐฐ ๋น ๋ฅธ ์„ฑ๋Šฅ์„ ์ œ๊ณตํ•œ๋‹ค.

ํ•ด๋‹น ๊ฐœ๋…์ด ํ•„์š”ํ•œ ์ด์œ 

  • ๊ธฐ์กด ๋นŒ๋“œ ๋„๊ตฌ(webpack, Rollup, Parcel)๋Š” JavaScript๋กœ ์ž‘์„ฑ๋˜์–ด ์†๋„์— ํ•œ๊ณ„
  • ํ”„๋กœ์ ํŠธ๊ฐ€ ์ปค์งˆ์ˆ˜๋ก ๋นŒ๋“œ ์‹œ๊ฐ„์ด ๋ถ„ ๋‹จ์œ„๋กœ ์ฆ๊ฐ€ โ†’ ๊ฐœ๋ฐœ ์ƒ์‚ฐ์„ฑ ์ €ํ•˜
  • esbuild๋Š” ์ด ์„ฑ๋Šฅ ๋ณ‘๋ชฉ์„ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด ํƒ„์ƒ

AS-IS (JS ๊ธฐ๋ฐ˜ ๋นŒ๋“œ ๋„๊ตฌ)

three.js ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ 10๊ฐœ ๋ณต์‚ฌ๋ณธ ํ”„๋กœ๋•์…˜ ๋ฒˆ๋“ค๋ง ๋ฒค์น˜๋งˆํฌ:

webpack 5:              41.21์ดˆ
Rollup 4 + Terser:      34.10์ดˆ
Parcel 2:               14.91์ดˆ

โ†’ ์ˆ˜์‹ญ ์ดˆ ๋Œ€๊ธฐ

TO-BE (esbuild)

๊ฐ™์€ ๋ฒค์น˜๋งˆํฌ:

esbuild:                 0.39์ดˆ  โ† 100๋ฐฐ ์ด์ƒ ๋น ๋ฆ„

โ†’ 1์ดˆ ์ด๋‚ด ์™„๋ฃŒ

์™œ ์ด๋ ‡๊ฒŒ ๋น ๋ฅธ๊ฐ€?

  1. Go ์–ธ์–ด: ์ปดํŒŒ์ผ๋œ ๋„ค์ดํ‹ฐ๋ธŒ ์ฝ”๋“œ๋กœ ์‹คํ–‰ (V8 JIT ์˜ค๋ฒ„ํ—ค๋“œ ์—†์Œ)
  2. ๋ณ‘๋ ฌ ์ฒ˜๋ฆฌ: Go์˜ goroutine์„ ํ™œ์šฉํ•œ ๋ฉ€ํ‹ฐ์ฝ”์–ด ๋ณ‘๋ ฌ ํŒŒ์‹ฑ/๋ฒˆ๋“ค๋ง
  3. ๋ฉ”๋ชจ๋ฆฌ ํšจ์œจ: ์ตœ์†Œํ•œ์˜ ๋ฉ”๋ชจ๋ฆฌ ํ• ๋‹น์œผ๋กœ GC ๋ถ€๋‹ด ๊ฐ์†Œ
  4. ์ฒ˜์Œ๋ถ€ํ„ฐ ์†๋„ ๋ชฉํ‘œ ์„ค๊ณ„: ๊ธฐ์กด ๋„๊ตฌ์˜ ์•„ํ‚คํ…์ฒ˜ ์ œ์•ฝ ์—†์ด ์„ฑ๋Šฅ ์ตœ์ ํ™”

ํ•ต์‹ฌ ๊ธฐ๋Šฅ

  • JavaScript, TypeScript, JSX ํŠธ๋žœ์ŠคํŒŒ์ผ๋ง
  • CSS ๋ฒˆ๋“ค๋ง (CSS Modules ํฌํ•จ)
  • Tree-shaking ๋ฐ Minification
  • Source Map ์ƒ์„ฑ
  • ESM / CommonJS ๋ชจ๋“ˆ ์ง€์›
  • Watch ๋ชจ๋“œ ๋ฐ ๋กœ์ปฌ ๊ฐœ๋ฐœ ์„œ๋ฒ„
  • ํ”Œ๋Ÿฌ๊ทธ์ธ ์‹œ์Šคํ…œ

Vite์—์„œ์˜ ์—ญํ• 

esbuild๋Š” Vite์—์„œ ๋‘ ๊ฐ€์ง€ ์—ญํ• ์„ ํ•œ๋‹ค:

์—ญํ• ์„ค๋ช…
Dependency Pre-bundlingnode_modules์˜ ์˜์กด์„ฑ์„ ESM์œผ๋กœ ๋ณ€ํ™˜ + ๋‹จ์ผ ํŒŒ์ผ๋กœ ํ•ฉ์นจ
TypeScript ํŠธ๋žœ์ŠคํŒŒ์ผ๋ง.ts ํŒŒ์ผ์„ JS๋กœ ๋ณ€ํ™˜ (tsc ๋Œ€๋น„ 20~30๋ฐฐ ๋น ๋ฆ„, ํƒ€์ž… ์ฒดํฌ๋Š” ์•ˆ ํ•จ)

ํ”„๋กœ๋•์…˜ ๋นŒ๋“œ์—๋Š” esbuild ๋Œ€์‹  Rollup์„ ์‚ฌ์šฉํ•œ๋‹ค. ์ด์œ : Vite์˜ ํ”Œ๋Ÿฌ๊ทธ์ธ API๊ฐ€ esbuild์™€ ํ˜ธํ™˜๋˜์ง€ ์•Š๊ณ , Rollup์˜ ์œ ์—ฐํ•œ ํ”Œ๋Ÿฌ๊ทธ์ธ ์ƒํƒœ๊ณ„๊ฐ€ ๋” ์„ฑ์ˆ™ํ•˜๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. ํ–ฅํ›„ Rolldown(Rollup์˜ Rust ํฌํŒ…)์ด ์ด ๋‘˜์„ ํ†ตํ•ฉํ•  ์ˆ˜ ์žˆ๋‹ค.

์ฐธ๊ณ  ๋ฌธ์„œ