FAQ
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 →
Pourquoi la sortie de for...of est-elle si verbeuse et peu élégante ?
Pour se conformer à la spécification, la méthode return de l'itérateur doit être appelée lors des erreurs. Une alternative consiste à utiliser les assumptions introduites dans Babel 7.13, comme ArrayLikeIsIterable et IterableIsArray.
Notez toutefois qu'il existe de nombreuses mises en garde si vous utilisez les assumptions et que vous choisissez volontairement de ne pas vous conformer à la spécification.
Voir babel/rfcs#5, google/traceur-compiler#1773 et babel/babel#838 pour plus d'informations.
Pourquoi this et arguments sont-ils re-mappés dans les fonctions fléchées ?
Les fonctions fléchées ne sont pas synonymes de fonctions normales. arguments et this à l'intérieur des fonctions fléchées référencent leur fonction parente, par exemple :
const user = {
firstName: "Sebastian",
lastName: "McKenzie",
getFullName: () => {
// whoops! `this` doesn't actually reference `user` here
return this.firstName + " " + this.lastName;
},
// use the method shorthand in objects
getFullName2() {
return this.firstName + " " + this.lastName;
},
};
Voir babel/babel#842, babel/babel#814, babel/babel#733 et babel/babel#730 pour plus d'informations.
Pourquoi this est-il re-mappé vers undefined ?
Babel suppose que tout code source est un module ES2015. Les modules ES2015 sont implicitement en mode strict, ce qui signifie que this au niveau supérieur n'est pas window dans le navigateur ni exports dans Node.js.
Si vous ne souhaitez pas ce comportement, vous pouvez désactiver strict dans le plugin-transform-modules-commonjs.
ATTENTION : En agissant ainsi, vous choisissez délibérément de vous écarter de la spécification, ce qui peut causer des problèmes d'interopérabilité futurs.
À l'aide ! Je veux juste utiliser Babel comme en version 5.x ! Tout est trop compliqué maintenant !
Nous vous comprenons ! Babel 6 nécessite un minimum de configuration pour fonctionner.
Nous pensons que c'est préférable et avons ajouté des presets pour faciliter cette transition.
Migrer de Babel 5.x vers Babel 6
Le cœur de Babel 6 réside dans ses plugins. Les plugins nécessaires dépendent entièrement de votre configuration spécifique, mais ajoutez simplement ce fichier de configuration pour obtenir les mêmes transformations que dans Babel 5 :
{
"presets": ["env", "react", "stage-2"]
}
- npm
- Yarn
- pnpm
- Bun
npm install babel-preset-env babel-preset-react babel-preset-stage-2 --save-dev
yarn add babel-preset-env babel-preset-react babel-preset-stage-2 --dev
pnpm add babel-preset-env babel-preset-react babel-preset-stage-2 --save-dev
bun add babel-preset-env babel-preset-react babel-preset-stage-2 --dev
Consultez aussi notre article Setting up Babel 6 (en anglais).
Où est passée toute la documentation ?!
Babel 6 removes a lot of the options in favor of plugins so a lot of the docs are no longer applicable.
For every removed option there should be a plugin for it. It's possible we may have missed something, if you think this is the case, please open an issue!
Babel est un projet open source et nous apprécions toute contribution.
Aidez-nous à améliorer la documentation en soumettant une pull request sur le dépôt babel.github.io.
Comment compiler Babel à partir des sources ?
Voir les instructions de compilation.
Comment contribuer à Babel ?
Voir le guide de contribution.
Pourquoi j'obtiens une erreur de syntaxe/un token inattendu ?
Il est très probable que vous n'ayez pas inclus un plugin ou un preset prenant en charge cette fonctionnalité. (Il est également possible qu'il s'agisse d'un bogue dans le parser, ou qu'il s'agisse réellement d'une erreur de syntaxe).
Pourquoi un certain package babel-x n'est-il pas mis à jour ?
Nous utilisons actuellement le système de versionnage fixe de Lerna.
Nous avons une version globale pour tous les packages. Lors d'une release, seuls les packages ayant subi des modifications sont mis à jour (nous effectuons un git diff sur le dossier concerné).
Si nous mettons uniquement à jour babel-plugin-transform-exponentiation-operator en 6.x.x, nous ne publions pas actuellement de nouvelle version pour tous les packages puisque les autres dépendances utilisent ^.
Par exemple, la release v6.6.0 de Babel ne signifie pas que tous les packages sont désormais en version 6.6.0.
Pour garantir l'utilisation des dernières versions des packages, vous devrez peut-être supprimer node_modules et exécuter npm install à nouveau.