6.0.0 Rilasciato
Questa pagina è stata tradotta da PageTurner AI (beta). Non ufficialmente approvata dal progetto. Hai trovato un errore? Segnala problema →
NOTA: Non tutte le integrazioni sono state ancora aggiornate. Questa è una major molto disruptiva quindi abbiate pazienza mentre sistemiamo gli ultimi dettagli.
È difficile credere che sia passato un anno dall'inizio del progetto Babel, ma c'era una torta di compleanno, quindi deve essere vero!
I work with some super awesome people. Thank you @cpojer and Ovidiu! pic.twitter.com/l1NzyobiBz
— Sebastian McKenzie (@sebmck) September 28, 2015
Sono successe tantissime cose nell'ultimo anno. Abbiamo viaggiato in tutto il mondo parlando di Babel e abbiamo incontrato persone davvero fantastiche lungo il percorso.
Babel ha trascorso l'ultimo anno trovando il suo posto nella comunità JavaScript. A febbraio abbiamo deciso che Babel non sarebbe stato solo un transpiler ES6. Invece, doveva diventare una piattaforma. Una suite di strumenti progettati per creare la prossima generazione di tooling JavaScript.
Quando abbiamo rilasciato Babel 5, includeva una nuova API per plugin che permetteva a chiunque di utilizzare tutta la potenza di Babel per creare strumenti che si collegano direttamente al processo di trasformazione. In pochi mesi questo si è trasformato in un intero ecosistema di strumenti.
Gli sviluppatori hanno creato di tutto: da strumenti di debug, ottimizzazioni per framework e minificatori a nuove sintassi sperimentali e sistemi per applicare regole complesse ai loro codebase. Queste estensioni si sono rivelate sia creative che estremamente utili.
Le persone hanno anche costruito strumenti complessi sfruttando gli internals di Babel, come documentationjs che utilizza il parser Babylon di Babel per sostituire uno strumento esistente con una versione molto più intelligente.
Ma pensiamo di poter fare ancora di più. Babel dovrebbe poter alimentare minificatori, linter, formattatori, syntax highlighter, strumenti di completamento codice, type checker, strumenti per codemod e qualsiasi altro tool che utilizzi le stesse fondamenta per lavorare meglio che mai.
Quindi oggi rilasciamo Babel 6.
Questo è l'aggiornamento più significativo che abbiamo mai fatto e permette al progetto di diventare veramente una piattaforma su cui la comunità può costruire.
Modularizzazione
Il cambiamento più evidente è che Babel è stato completamente ristrutturato per essere il più modulare possibile, e tutti i transformer sono stati riscritti come plugin utilizzando la stessa API esposta a tutti.
Tutti gli internals sono stati estratti in pacchetti separati, ognuno dei quali definisce una leggera API pubblica che può essere utilizzata indipendentemente dal resto.
Se vuoi costruire qualcosa utilizzando alcuni internals di Babel, ora puoi semplicemente installare il pacchetto e avere pieno accesso. All'interno della directory packages troverai tutti i pacchetti e plugin esistenti.
Plugin Opt-in
Poiché Babel si concentra sull'essere una piattaforma per il tooling JavaScript e non un transpiler ES2015, abbiamo deciso di rendere tutti i plugin opt-in. Ciò significa che quando installi Babel non trasformerà più il tuo codice ES2015 di default.
Per semplificare drasticamente l'API pubblica di Babel, ogni transformer è ora completamente indipendente. Ciò significa che le opzioni 'blacklist', 'whitelist', 'optional', 'nonStandard' e 'modules' sono state rimosse, ma ciò non significa che dovrai fare più lavoro per far trasformare il tuo codebase da Babel.
Preset di Plugin
Poiché specificare e mantenere dozzine di transformer in un file di configurazione sarebbe molto lavoro, Babel 6 introduce il concetto di Plugin Preset che raggruppano plugin simili per un utilizzo semplificato.
$ npm install --save-dev babel-preset-es2015
{
“presets”: [“es2015”]
}
I preset ufficiali inclusi oggi sono babel-preset-es2015 e babel-preset-react, ma ci aspettiamo che ce ne saranno molti altri in futuro.
Abbiamo inoltre aggiunto preset per le fasi di sviluppo, come babel-preset-stage-0 (che in Babel 5.x corrispondeva a stage: 0 nel file .babelrc).
Miglioramenti delle Prestazioni
Le prestazioni rimangono una delle massime priorità per Babel. La versione 5 ha rivoluzionato la pipeline di trasformazione e traversamento per aprire la strada a significativi miglioramenti implementati ora in Babel 6.
Il processo di traversamento rappresenta una delle fasi più onerose nella pipeline di Babel. Con qualsiasi strumento basato su AST è essenziale minimizzare le traversate dell'albero per garantire velocità. I plugin sono progettati proprio per operare in modo fulmineo integrandosi con il resto del sistema.
Babel 6 introduce una nuova ottimizzazione che unisce tutti i plugin in un'unica traversata. Gestisce completamente il processo di attraversamento, liberando i plugin da questa responsabilità. Gli sviluppatori possono così concentrarsi esclusivamente sulla scrittura delle trasformazioni, mentre Babel si occupa del resto.
API dei Plugin
Ricevendo numerosi feedback sull'API dei plugin giudicata complessa, in Babel 6 l'abbiamo semplificata. Si tratta di un cambiamento non retrocompatibile, ma ridurrà significativamente la confusione.
Babel 5
export default function({ Plugin, types: t }) {
return new Plugin(‘ast-transform’, {
visitor: { … }
});
}
Babel 6
export default function({ types: t }) {
return {
visitor: { … }
};
}
Autori di plugin: Durante l'aggiornamento, ricordate di incrementare il numero di versione principale poiché Babel 5 e 6 sono incompatibili. Il semantic versioning è fondamentale!
Nuove/Aggiornate Proposte
Sono emerse diverse proposte TC39 aggiornate. Babel 6 adotta le revisioni più recenti per decoratori, proprietà di classe e altre funzionalità sperimentali.
In Chiusura
Questa release rappresenta un traguardo entusiasmante per noi.
Chiunque abbia partecipato a un progetto open source sa quanta fatica richieda, ma alla fine è incredibilmente gratificante poter restituire anche il minimo contributo alla community.
Sebastian ha letteralmente lavorato tutta la notte per ultimare gli aspetti necessari al lancio di Babel 6 durante il suo keynote a EmberCamp. Mentre scrivo questo post alle 1 del mattino a San Francisco, ascolto musica EDM per rimanere sveglio.
Un ringraziamento a tutti coloro che hanno contribuito anche minimamente a Babel. Un enorme riconoscimento a Logan Smyth (@loganfsmyth), Henry Zhu (@hzoo), Jesse McCarthy (@jmm) e Denis Pushkarev (@zloirock) per il loro instancabile lavoro nella gestione delle issue e nei contributi al progetto.
Siamo entusiasti di rilasciare finalmente Babel 6 al mondo. Come sempre, ci impegniamo a rendere Babel lo strumento migliore possibile: continuate a inviare issue su GitHub e pull request!