Qu'est-ce que Babel et pourquoi en a-t-on besoin ?
\n\nBabel est un puissant transpileur (compilateur) pour JavaScript qui permet aux développeurs d'écrire du code dans les versions les plus récentes d'ECMAScript (ES6, ES7, ES8, ES9, ES10, ES11, ES12 et supérieur) et de le convertir en JavaScript rétrocompatible, capable de s'exécuter dans les anciens navigateurs et environnements d'exécution (par exemple, Node.js versions inférieures à 12).
\n\nLe problème principal que Babel résout est le fossé entre les nouvelles fonctionnalités du langage (fonctions fléchées, async/await, déstructuration, classes, modules, chaînage optionnel, etc.) et leur prise en charge dans les environnements d'exécution réels. Babel agit comme un pont, permettant aux développeurs de profiter de tous les avantages du JavaScript moderne sans avoir à attendre que tous les navigateurs soient mis à jour.
\n\nBabel se compose de trois composants principaux :
\n- \n
- Le noyau (@babel/core) — le moteur principal qui analyse le code, le transforme et génère un nouveau code. \n
- Les plugins — des modules individuels, chacun responsable de la transformation d'une construction syntaxique spécifique (par exemple, un plugin pour les fonctions fléchées, pour async/await). \n
- Les presets — des ensembles de plugins préconfigurés (par exemple, @babel/preset-env, @babel/preset-react). \n
Babel est également utilisé pour la transpilation de TypeScript, JSX (React), Flow et d'autres extensions de JavaScript.
\n\nInstallation de Babel
\n\nBabel s'installe via npm (Node Package Manager). Pour commencer, vous aurez besoin de Node.js version 12 ou supérieure.
\n\nCréez un nouveau projet et initialisez-le :
\nmkdir my-babel-project\ncd my-babel-project\nnpm init -y\n\nInstallez les paquets principaux de Babel :
\nnpm install --save-dev @babel/core @babel/cli @babel/preset-env\n\nAnalysons ce que nous avons installé :
\n- \n
- @babel/core — le noyau de Babel. Sans lui, rien ne fonctionnera. \n
- @babel/cli — l'interface en ligne de commande, permettant d'exécuter Babel depuis le terminal. \n
- @babel/preset-env — le preset le plus important, qui détermine automatiquement les plugins nécessaires en fonction des environnements cibles (navigateurs ou versions de Node.js). \n
Pour travailler avec React, installez en plus :
\nnpm install --save-dev @babel/preset-react\n\nPour TypeScript :
\nnpm install --save-dev @babel/preset-typescript\n\nDémarrage rapide avec un exemple de code
\n\nCréez un fichier de configuration Babel (babel.config.json ou .babelrc) à la racine du projet :
\n{\n "presets": [\n ["@babel/preset-env", {\n "targets": {\n "node": "current"\n }\n }]\n ]\n}\n\nCréez un fichier src/index.js avec du code moderne :
// src/index.js\nconst greet = (name) => {\n return `Hello, ${name}!`;\n};\n\nconst users = ['Alice', 'Bob', 'Charlie'];\nconst greetings = users.map(user => greet(user));\n\nconsole.log(greetings);\n\n// Utilisation de async/await\nconst fetchData = async () => {\n const data = await Promise.resolve({ message: 'Success' });\n console.log(data.message);\n};\n\nfetchData();\n\nCompilez maintenant le code avec Babel :
\nnpx babel src --out-dir dist\n\nAprès l'exécution de la commande, un fichier index.js avec le code transformé apparaîtra dans le dossier dist :
// dist/index.js\n"use strict";\n\nvar greet = function greet(name) {\n return "Hello, ".concat(name, "!");\n};\n\nvar users = ['Alice', 'Bob', 'Charlie'];\nvar greetings = users.map(function (user) {\n return greet(user);\n});\n\nconsole.log(greetings);\n\nvar fetchData = async function fetchData() {\n var data = await Promise.resolve({ message: 'Success' });\n console.log(data.message);\n};\n\nfetchData();\n\nNotez
Aussi dans la bibliothèque
GraphQL en PHP : la bibliothèque webonyx/graphql-php pour créer des API
Traitement d'images en Rust : redimensionnement et recadrage avec image et imageproc
Conteneur d'injection de dépendances pour Go (Golang) — wire, dig, fx
Sérialisation d'objets en TypeScript : Guide complet