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 --noEmitseparato - 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.
