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
Babel abilita l’intera generazione di JavaScript moderno nei browser del 2015-2020. Pairing standard con Webpack: Webpack orchestra, Babel traspila.
Acquisizione: nel 2017 Facebook finanzia il progetto tramite Open Source Collective; Sebastian McKenzie entra in Meta. Babel 7 (2018) standardizza monorepo con @babel/* scope npm.
Con la convergenza dei browser moderni verso ES2017+ nativo (da 2019), Babel rimane critico per nuove feature proposte (decorators, private fields, class static blocks) e per target legacy.
Nel contesto italiano
Ubiquitario: ogni progetto React/Vue/Angular in Italia usa Babel (spesso in modo invisibile tramite scaffolding).
Riferimenti: Babel 5.0 (31 marzo 2015). Sebastian McKenzie. Evoluzione: Babel 6 (2015), 7 (2018). Licenza MIT. Parser Acorn. Plugin ecosystem ampio.
