2to3
Cette page a été traduite par PageTurner AI (bêta). Non approuvée officiellement par le projet. Vous avez trouvé une erreur ? Signaler un problème →
Ces dernières semaines, nous avons constaté une forte activité sur 6to5 ; des milliers de personnes le téléchargent chaque jour aux quatre coins du monde. Le mois dernier, plus de 200 problèmes ont été résolus. Depuis la version 2.0, il y a eu 867 commits et 60 versions mineures et correctives. Il fait désormais partie du top 1% des paquets les plus téléchargés sur npm, avec près de 100 000 téléchargements rien que le mois dernier.
Aujourd'hui, nous publions la version 3.0.
Note : 6to5 ne retient pas les corrections de bogues ou les nouvelles fonctionnalités rétrocompatibles pour les versions majeures. Certaines fonctionnalités listées proviennent de versions ultérieures de la branche 2.x.
Mode Loose (relâché)
6to5 accorde une grande importance à la conformité aux spécifications dans tout ce qu'il fait. Parfois, la spécification exige une grande complexité autour de cas limites qui n'affectent pas la majorité du code.
Nous avons ajouté le mode Loose pour ignorer certains de ces cas limites afin de produire un code de sortie plus propre, plus petit et plus rapide à exécuter.
Par exemple, l'appel de super() à l'intérieur d'un constructeur serait normalement compilé en :
function Foo() {
_get(Object.getPrototypeOf(Foo.prototype), "constructor", this).call(this);
}
Cependant, avec le mode Loose, il est compilé en :
function Foo() {
Bar.call(this);
}
Avant d'utiliser le mode Loose, sachez qu'il n'est pas totalement conforme à la spécification et peut générer du code incompatible si vous ne tenez pas compte de ces incohérences. Consultez la documentation pour plus d'informations.
Améliorations des performances
Ces dernières semaines, @gaearon a réalisé un travail remarquable pour améliorer le temps de compilation de 6to5 de plus de 200%. Ce type d'améliorations est extrêmement important pour nous et nous sommes ravis de voir de telles contributions de la part des membres de la communauté.
Bac à sable : Opérateur Mallet
Comme dans Ruby et CoffeeScript, l'opérateur Mallet permet d'assigner conditionnellement des valeurs en fonction de leur caractère falsy.
a ||= b
se comportera comme
if (!a) a = b;
Cette fonctionnalité vous est proposée par @jridgewell. Nous encourageons les auteurs de propositions à se manifester pour voir leurs idées implémentées aux côtés des dernières fonctionnalités du langage et des API.
selfContained (auto-contenu)
Nous avons également introduit un nouveau transformateur optionnel qui supprime le besoin d'un polyfill et contourne toutes les mises en garde de 6to5. Il aliasera automatiquement les méthodes statiques ES6 et les éléments intégrés, tout en incluant regenerator lorsque vous utilisez des fonctions asynchrones ou des générateurs. C'est idéal pour les bibliothèques qui ne veulent pas polluer la portée globale.
Cela remplace la transformation coreAliasing et l'option includeRegenerator. Consultez la documentation pour plus d'informations.
Transformateurs avec espace de noms
Dans la version 3.0, nous avons renommé tous les transformateurs, non seulement pour plus de cohérence mais aussi pour leur attribuer un espace de noms.
Par exemple, nous avons renommé tous les transformateurs es7 en éléments comme es7.comprehensions ou es7.objectSpread afin que si vous souhaitez mettre sur liste noire tous les transformateurs es7, vous puissiez simplement :
$ 6to5 --blacklist es7
Pour une liste complète des transformateurs renommés, consultez le journal des modifications.
De nombreuses nouvelles fonctionnalités et corrections de bogues font de la v3 une excellente version. Veillez à toutes les consulter dans le journal des modifications.
Nous tenons à remercier tous les membres de la communauté 6to5, et particulièrement ceux qui ont contribué à la réalisation de la version 3.0.
L'avenir s'annonce radieux.
— The 6to5 team