Il gap ES5 → ES6
Lo standard ES2015 (ES6) è in finalizzazione nel 2015 con novità sostanziali — let/const, arrow functions, classes, template literals, destructuring, modules, promise, async/await (ES2017). I browser e Node.js di produzione supportano solo ES5. Agli sviluppatori serve un transpiler che converta ES6+ in ES5 compatibile.
6to5, avviato nel 2014 da Sebastian McKenzie (allora diciannovenne australiano), risolve questo problema. A febbraio 2015 il progetto viene rinominato Babel per riflettere l’ambizione più ampia (non solo ES6, ma traduttore universale JavaScript). La versione 5.0 è del 31 marzo 2015.
Licenza MIT.
Architettura plugin
Babel è strutturato come pipeline:
- Parser (basato su Acorn) — AST del codice input
- Trasformazioni — plugin che modificano l’AST
- Generator — AST → codice JS target
Ogni plugin è responsabile di una trasformazione specifica (ES6 arrow functions → ES5 function, ES6 classes → ES5 prototype-based, ecc.). I preset (preset-env, preset-react, preset-typescript) sono collezioni di plugin.
Features principali
- Transpilation ES2015+, ES2016+, ES2017+, stage proposals
- Source maps per debug del sorgente originale
- JSX transform (per React)
- Flow type stripping (tipizzazione statica pre-TypeScript)
- TypeScript transform (via
@babel/preset-typescript) - Polyfills via
@babel/polyfill/core-js
Impatto atteso
Babel sta abilitando la transizione verso JavaScript moderno nei browser: il pairing con Webpack (Webpack orchestra, Babel traspila) è destinato a diventare lo stack standard frontend nei prossimi anni.
Nel contesto italiano
Babel sta entrando rapidamente nei team frontend italiani: ogni nuovo progetto React — e presto Vue, Angular — lo adotta come traspilatore di default.
Riferimenti: Babel 5.0 (31 marzo 2015). Sebastian McKenzie. Licenza MIT. Parser Acorn. Plugin ecosystem ampio.
