esbuild: bundler JavaScript 100 volte più veloce

esbuild (gennaio 2020, stable 0.12 giugno 2021) di Evan Wallace (Figma): bundler JavaScript/TypeScript scritto in Go, 10-100× più veloce di Webpack/Rollup. Base di Vite, tsup, Bun. Trasformazioni JSX/TS in ms.

Open SourceWeb esbuildEvan WallaceGoBundlerJavaScriptTypeScriptOpen Source

Il collo di bottiglia del bundling

Webpack, Rollup, Parcel sono scritti in JavaScript e girano single-thread. Build di progetti frontend grandi richiedono 30s-5min. Durante development hot-reload di ogni cambiamento aggiunge latenza. Serve un cambio di paradigma.

Il rilascio

esbuild è pubblicato nel gennaio 2020 da Evan Wallace, cofounder e CTO di Figma, come side project. La versione 0.12 (giugno 2021) segna la stabilizzazione API. Scritto in Go, licenza MIT. Parallel-first, zero dipendenze JS.

Caratteristiche

  • Velocità estrema — 10-100× più veloce di Webpack/Rollup
  • TypeScript stripping (non type-checking)
  • JSX transform
  • Tree shaking aggressivo
  • Code splitting e lazy loading
  • ESM + CommonJS output
  • Minification built-in (alternativa a Terser)
  • Source maps
  • Plugin API per estensioni custom
  • CLI, JS API (Node), Go API
esbuild app.tsx --bundle --minify --outfile=out.js

Benchmark tipici

Build di un’app React di 10.000 moduli:

  • Webpack: ~40s
  • Rollup: ~30s
  • Parcel 2: ~15s
  • esbuild: ~0.5s

Uso come dipendenza

esbuild non è usato solo standalone, ma come foundation di:

  • Vite — dev server e pre-bundle con esbuild, produzione con Rollup
  • tsup — bundler TypeScript library
  • Bun — uses esbuild-like core
  • Next.js — SWC/esbuild in parts
  • Remix — pre-build
  • Snowpack — legacy
  • Sveltekit — bundling
  • Astro — parte della toolchain

Limiti

  • No type-checking TypeScript — serve tsc --noEmit separato
  • Plugin ecosystem piccolo vs Webpack
  • Css handling base (via PostCSS plugin)

Concorrenti

  • SWC (2019) — Rust, simile speed, usato in Next.js
  • Rollup (2015) — standard per librerie
  • Turbopack (2022, Vercel) — successor webpack Rust-based, per Next.js
  • Rspack (2023, ByteDance) — Rust, Webpack-compatible
  • Parcel 2 (2021) — swc + nativo

Nel contesto italiano

esbuild è onnipresente nei progetti frontend italiani moderni, di solito indirettamente via Vite, Astro, Next.js. Usato direttamente da:

  • Library maintainer italiani (tsup)
  • Monorepo TypeScript (Turborepo)
  • Pipeline CI che richiedono build veloci
  • Serverless deployment (Lambda, Cloudflare Workers)

L’impatto è stato sismico: tempi di build mediana di progetti React sono passati da minuti a secondi post-esbuild adozione (tramite Vite).


Riferimenti: esbuild (Evan Wallace, Figma, gennaio 2020). Stabilizzazione 0.12 (giugno 2021). Licenza MIT. Scritto in Go. Usato come foundation in Vite, tsup, Bun. Concorrenti SWC (Rust), Turbopack, Rspack.

Vuoi supporto? Sei sotto attacco? Stato dei servizi
Vuoi supporto? Sei sotto attacco? Stato dei servizi