Vai al contenuto principale

Da 2 a 3

· Lettura di 3 min
Traduzione Beta Non Ufficiale

Questa pagina è stata tradotta da PageTurner AI (beta). Non ufficialmente approvata dal progetto. Hai trovato un errore? Segnala problema →

Nelle ultime settimane abbiamo registrato un'intensa attività su 6to5: migliaia di download giornalieri da ogni angolo del mondo. Nell'ultimo mese sono state chiuse oltre 200 issue. Dal rilascio della versione 2.0, abbiamo avuto 867 commit e 60 release minori e di patch. Ora è tra l'1% dei pacchetti più scaricati su npm, con quasi 100.000 download solo nell'ultimo mese.

Oggi rilasciamo la versione 3.0.

Nota: 6to5 non trattiene fix di bug o nuove funzionalità retrocompatibili per i rilasci major. Alcune funzionalità elencate provengono da release successive della 2.x.

Loose Mode

6to5 è fortemente orientato alla conformità alle specifiche in ogni sua operazione. Talvolta le specifiche richiedono complessità significative per gestire edge case che non riguardano la maggior parte del codice.

Abbiamo introdotto la Loose Mode per ignorare alcuni di questi edge case, producendo output più pulito, compatto e a esecuzione più rapida.

Ad esempio, chiamare super() in un costruttore verrebbe normalmente compilato in:

JavaScript
function Foo() {
_get(Object.getPrototypeOf(Foo.prototype), "constructor", this).call(this);
}

Tuttavia, con la Loose Mode viene compilato in:

JavaScript
function Foo() {
Bar.call(this);
}

Prima di utilizzare la Loose Mode, considera che non è completamente allineata alle specifiche e potrebbe generare codice incompatibile se non si è consapevoli di queste incongruenze. Consulta la documentazione per maggiori dettagli.

Miglioramenti delle Prestazioni

Nelle ultime settimane @gaearon ha ottimizzato i tempi di compilazione di 6to5 migliorandoli di oltre il 200%. Questi progressi sono fondamentali per noi e apprezziamo enormemente i contributi di qualità da parte della community.

Playground: Operatore Mallet

Come in Ruby e CoffeeScript, l'operatore Mallet consente l'assegnazione condizionale di valori in base al loro stato di falsy-ness.

JavaScript
a ||= b

si comporterà come

JavaScript
if (!a) a = b;

Questa funzionalità arriva da @jridgewell. Incoraggiamo gli autori di proposte a presentare idee per implementarle insieme alle ultime funzionalità del linguaggio e delle API.

selfContained

Abbiamo introdotto un nuovo transformer opzionale che elimina la necessità di un polyfill e aggira tutte le limitazioni di 6to5. Alias automaticamente i metodi statici e i built-in di ES6, oltre a includere regenerator quando si utilizzano funzioni asincrone o generatori. Ideale per librerie che evitano di inquinare lo scope globale.

Sostituisce la trasformazione coreAliasing e l'opzione includeRegenerator. Consulta la documentazione per dettagli.

Transformer con Namespace

Nella 3.0 abbiamo rinominato tutti i transformer, sia per coerenza che per dotarli di namespace.

Ad esempio, abbiamo rinominato i transformer ES7 come es7.comprehensions o es7.objectSpread. Per escludere tutti i transformer ES7, basta semplicemente:

Shell
$ 6to5 --blacklist es7

Per l'elenco completo dei transformer rinominati, consulta il Changelog.


Numerose nuove funzionalità e fix di bug rendono la v3 un rilascio eccellente. Rivedile tutte nel Changelog.

Ringraziamo tutti coloro che hanno partecipato alla comunità di 6to5, con particolare riconoscenza per chi ha contribuito a realizzare la versione 3.0.

Il futuro si prospetta luminoso.

— The 6to5 team