Babel : la version 7.0 du transpileur JavaScript est disponible avec le support de TypeScript
et bien d'autres nouvelles fonctionnalités

Près de trois ans depuis la sortie de sa version 6.0, Babel 7.0 est officiellement disponible, après plus de 50 préversions et plus de 4000 commits. Rappelons qu'il s'agit d'un transpileur JavaScript qui est populaire parmi les développeurs Web pour sa capacité à transformer du code ES6 en code ES5. Mais Babel permet aussi d'interagir avec d'autres outils JavaScript (ou non) comme React, NodeJS, Rails ou encore Browserify. Étant compatible avec les principaux navigateurs, il peut également être étendu par divers plugins.


Avec sa nouvelle version majeure, Babel prend en charge le langage TypeScript, même s'il semble que le support n'est pas encore complet. C'est en tout cas l'une des principales nouveautés de cette version. En plus de cela, Babel est maintenant plus rapide. Babel 7 apporte en effet de nombreuses modifications qui permettent de créer des builds plus vite qu'auparavant. Elles incluent des modifications pour optimiser le code et l'application de patchs de l'équipe du moteur JavaScript v8.

Babel 7 est également livré avec un nouvel outil de mise à niveau, babel-upgrade. Cet outil effectuera automatiquement les modifications de mise à niveau dans les fichiers package.json et .babelrc. Pour l’utiliser, vous pouvez soit l'exécuter directement sur un dépôt GitHub avec npx babel-upgrade ou l'installer avec npm i babel-upgrade –g.

Babel 7 introduit aussi un nouveau fichier de configuration : babel.config.js. D'après l'équipe Babel, ce n'est pas une exigence ou même un remplaçant de .babelrc. C'est simplement un excellent ajout qui peut être utile pour certains cas d'utilisation. En ajoutant un fichier babel.config.js, Babel résoudra facilement la configuration au lieu de chercher dans chaque fichier jusqu'à ce qu'il trouve le code de configuration. Mais cela permettrait également de tirer parti d'une nouvelle option de configuration, overrides.

Si votre projet JavaScript nécessite des configurations de compilation différentes pour ses fichiers de test, son code client et son code serveur, il ne sera plus nécessaire de créer un fichier .babelrc distinct pour chacun. Avec l'option overrides, il sera possible de faire quelque chose comme ce qui suit :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
module.exports = {   
  presets: [     
    // default config...   
  ],   
  overrides: [
    {     
      test: ["./node_modules"],     
      presets: [       
        // config for node_modules     
      ],   
    }, 
    {     
      test: ["./tests"],     
      presets: [       
        // config for tests     
      ],   
    }
  ] 
};
Babel prend en charge les options de plugin depuis un certain temps. Mais dans Babel 7, il a été apporté quelques modifications à l’option loose de certains plugins et ajouté de nouvelles options pour d'autres plugins.

Entre autres nouveautés, on peut noter également que Babel 7 introduit le support expérimental du polyfilling automatique. En programmation web, un polyfill désigne un palliatif logiciel implémentant une rétrocompatibilité d’une fonctionnalité ajoutée à une interface de programmation dans des versions antérieures de cette interface. Il s’agit généralement d’ensemble de fonctions, le plus souvent écrites en JavaScript, permettant de simuler sur un navigateur web ancien des fonctionnalités qui n’y sont pas nativement disponibles. Les polyfills sont nécessaires pour des fonctionnalités telles que Promise et Symbol dans des environnements qui ne les prennent pas en charge.

Sur son site officiel, l'équipe Babel donne plus de détails sur les nouveautés de cette version. Précisions aussi que cette grosse mise à jour de Babel casse certaines fonctionnalités existantes du transpileur.

Source : Blog officiel de Babel

Et vous ?

Utilsiez-vous Babel dans vos développements ? Qu'en pensez-vous ?
Comment accueillez-vous les nouveautés de Babel 7 ?
Lesquelles appréciez-vous le plus ? Et pourquoi ?
Qu'attendez-vous encore des prochaines versions ?

Voir aussi :

Mithril : un framework JavaScript moderne, simple, rapide et léger comparé à React ou Angular pour ceux qui privilégient la facilité d'intégration
TypeScript 3.0 est disponible en version stable : un aperçu des nouveautés de cette version majeure du surensemble typé de JavaScript
ECMAScript 2017 : Ecma International annonce les nouvelles mises à jour de ses spécifications, pour les langages de script
Babel supporte officiellement TypeScript
Babel 6.0.0 : de transpileur à plateforme, utilisez dès maintenant les nouvelles fonctionnalités ECMAScript