Aller au contenu principal

@babel/core

Traduction Bêta Non Officielle

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 →

JavaScript
var babel = require("@babel/core");
import { transform } from "@babel/core";
import * as babel from "@babel/core";

Toutes les transformations utiliseront vos fichiers de configuration locaux.

transform

babel.transform(code: string, options?: Object, callback: Function)

Transforme le code fourni. Appelle une fonction de rappel avec un objet contenant le code généré, la source map et l'AST.

JavaScript
babel.transform(code, options, function(err, result) {
result; // => { code, map, ast }
});

Exemple

JavaScript
babel.transform("code();", options, function(err, result) {
result.code;
result.map;
result.ast;
});
info

Dans Babel 6, cette méthode était synchrone et transformSync n'existait pas. Pour des raisons de rétrocompatibilité, cette fonction se comportera de manière synchrone si aucune fonction de rappel n'est fournie. Si vous utilisez Babel 7 et avez besoin d'un comportement synchrone, utilisez transformSync car cette rétrocompatibilité sera supprimée dans Babel 8.

transformSync

babel.transformSync(code: string, options?: Object)

Transforme le code fourni. Renvoie un objet contenant le code généré, la source map et l'AST.

JavaScript
babel.transformSync(code, options); // => { code, map, ast }

Exemple

JavaScript
var result = babel.transformSync("code();", options);
result.code;
result.map;
result.ast;

transformAsync

babel.transformAsync(code: string, options?: Object)

Transforme le code fourni. Renvoie une promesse fournissant un objet contenant le code généré, la source map et l'AST.

JavaScript
babel.transformAsync(code, options); // => Promise<{ code, map, ast }>

Exemple

JavaScript
babel.transformAsync("code();", options).then(result => {
result.code;
result.map;
result.ast;
});

transformFile

babel.transformFile(filename: string, options?: Object, callback: Function)

Transforme de manière asynchrone l'intégralité du contenu d'un fichier.

JavaScript
babel.transformFile(filename, options, callback);

Exemple

JavaScript
babel.transformFile("filename.js", options, function(err, result) {
result; // => { code, map, ast }
});

transformFileSync

babel.transformFileSync(filename: string, options?: Object)

Version synchrone de babel.transformFile. Renvoie le contenu transformé du filename.

JavaScript
babel.transformFileSync(filename, options); // => { code, map, ast }

Exemple

JavaScript
babel.transformFileSync("filename.js", options).code;

transformFileAsync

babel.transformFileAsync(filename: string, options?: Object)

Version utilisant les promesses de babel.transformFile. Renvoie une promesse fournissant le contenu transformé du filename.

JavaScript
babel.transformFileAsync(filename, options); // => Promise<{ code, map, ast }>

Exemple

JavaScript
babel.transformFileAsync("filename.js", options).then(result => {
result.code;
});

transformFromAst

babel.transformFromAst(ast: Object, code?: string, options?: Object, callback: Function): FileNode | null

Transforme un AST donné.

JavaScript
const sourceCode = "if (true) return;";
const parsedAst = babel.parseSync(sourceCode, {
parserOpts: { allowReturnOutsideFunction: true },
});
babel.transformFromAst(parsedAst, sourceCode, options, function(err, result) {
const { code, map, ast } = result;
});
info

Dans Babel 6, cette méthode était synchrone et transformFromAstSync n'existait pas. Pour des raisons de rétrocompatibilité, cette fonction se comportera de manière synchrone si aucune fonction de rappel n'est fournie. Si vous utilisez Babel 7 et avez besoin d'un comportement synchrone, utilisez transformFromAstSync car cette rétrocompatibilité sera supprimée dans Babel 8.

transformFromAstSync

babel.transformFromAstSync(ast: Object, code?: string, options?: Object)

Transforme un AST donné.

JavaScript
const sourceCode = "if (true) return;";
const parsedAst = babel.parseSync(sourceCode, {
parserOpts: { allowReturnOutsideFunction: true },
});
const { code, map, ast } = babel.transformFromAstSync(
parsedAst,
sourceCode,
options
);

transformFromAstAsync

babel.transformFromAstAsync(ast: Object, code?: string, options?: Object)

Transforme un AST donné.

JavaScript
const sourceCode = "if (true) return;";
babel
.parseAsync(sourceCode, { parserOpts: { allowReturnOutsideFunction: true } })
.then(parsedAst => {
return babel.transformFromAstAsync(parsedAst, sourceCode, options);
})
.then(({ code, map, ast }) => {
// ...
});

parse

babel.parse(code: string, options?: Object, callback: Function)

Analyse du code en utilisant le comportement standard de Babel. Les presets et plugins référencés seront chargés de telle sorte que les plugins de syntaxe optionnels soient automatiquement activés.

info

Dans les premières versions bêta de Babel 7, cette méthode était synchrone et parseSync n'existait pas. Pour des raisons de rétrocompatibilité, cette fonction se comportera de manière synchrone si aucun callback n'est fourni. Si vous utilisez Babel 7 stable et avez besoin d'un comportement synchrone, veuillez utiliser parseSync car cette rétrocompatibilité sera abandonnée dans Babel 8.

parseSync

babel.parseSync(code: string, options?: Object)

Retourne un AST.

Analyse du code en utilisant le comportement standard de Babel. Les presets et plugins référencés seront chargés de telle sorte que les plugins de syntaxe optionnels soient automatiquement activés.

parseAsync

babel.parseAsync(code: string, options?: Object)

Retourne une promesse résolue avec un AST.

Analyse du code en utilisant le comportement standard de Babel. Les presets et plugins référencés seront chargés de telle sorte que les plugins de syntaxe optionnels soient automatiquement activés.

API avancées

De nombreux systèmes encapsulant Babel injectent automatiquement des plugins et presets ou surchargent des options. Pour faciliter cela, Babel expose plusieurs fonctions permettant de charger partiellement la configuration sans effectuer de transformation.

loadOptions

babel.loadOptions(options?: Object)

Résout complètement les options de Babel, produisant un objet où :

  • opts.plugins est une liste complète d'instances de Plugin.

  • opts.presets est vide et tous les presets sont fusionnés dans opts.

  • Il peut être repassé à Babel en toute sécurité. Des champs comme "babelrc" sont positionnés à false pour éviter tout rechargement ultérieur de fichiers de configuration.

Les instances de Plugin ne sont pas destinées à être manipulées directement, mais les appelants sérialisent souvent cet opts en JSON pour l'utiliser comme clé de cache représentant les options reçues par Babel. Ce mécanisme de cache n'est pas garanti à 100% mais constitue actuellement la meilleure solution disponible.

loadPartialConfig

babel.loadPartialConfig(options?: Object): PartialConfig

Permet aux systèmes de manipuler et valider facilement une configuration utilisateur en résolvant les plugins et presets sans aller plus loin. L'appelant est censé prendre les .options de la configuration, les manipuler et les repasser à Babel.

Cette fonction accepte une option supplémentaire dans l'objet d'options, en plus des options standard : showIgnoredFiles. Lorsqu'activée, loadPartialConfig retourne toujours un résultat pour les fichiers ignorés plutôt que null. Cela permet d'accéder à la liste des fichiers ayant influencé ce résultat (ex: mode watch). L'appelant détermine si un fichier est ignoré via la propriété fileHandling retournée.

  • babelrc: string | void - Chemin du fichier de configuration relative s'il existe.

  • babelignore: string | void - Chemin du fichier .babelignore s'il existe.

  • config: string | void - Chemin du fichier de configuration globale s'il existe.

  • options: ValidatedOptions - Les options partiellement résolues, qui peuvent être manipulées et repassées à Babel.

    • plugins: Array<ConfigItem> - Voir ci-dessous.
    • presets: Array<ConfigItem> - Voir ci-dessous.
    • Peut être repassé en toute sécurité à Babel. Des options comme "babelrc" sont définies sur false pour que les appels ultérieurs à Babel ne tentent pas de recharger les fichiers de configuration.
  • hasFilesystemConfig(): boolean - Vérifie si la configuration résolue a chargé des paramètres depuis le système de fichiers.

  • fileHandling - Valeur "transpile", "ignored" ou "unsupported" indiquant à l'appelant comment traiter ce fichier.

  • files - Set des chemins de fichiers lus pour construire la configuration finale, incluant les fichiers de configuration globaux, locaux, étendus, les fichiers d'ignorage, etc. Utile pour implémenter un mode watch ou l'invalidation de cache.

Les instances ConfigItem exposent des propriétés pour introspecter les valeurs, mais chaque élément doit être traité comme immuable. Pour des modifications, supprimez l'élément de la liste et remplacez-le soit par une valeur de configuration Babel standard, soit par un nouvel élément créé via babel.createConfigItem. Consultez cette fonction pour les détails sur les champs de ConfigItem.

createConfigItem

babel.createConfigItem(value: string | {} | Function | [string | {} | Function, {} | void], { dirname?: string, type?: "preset" | "plugin" }): ConfigItem

Permet aux outils de build de créer et cacher des éléments de configuration à l'avance. Si cette fonction est appelée plusieurs fois pour un même plugin, Babel appellera la fonction du plugin plusieurs fois. Si vous avez un ensemble défini de plugins et presets à injecter, la pré-construction des éléments de configuration est recommandée.

Type ConfigItem

Chaque ConfigItem expose toutes les informations connues de Babel. Les champs sont :

  • value: {} | Function - La valeur résolue du plugin.

  • options: {} | void - L'objet d'options passé au plugin.

  • dirname: string - Chemin relatif pour la résolution des options.

  • name: string | void - Nom donné à l'instance du plugin, ex: plugins: [ ['env', {}, 'my-env'] ]

  • file: Object | void - Informations sur le fichier du plugin (si connues par Babel).

    • request: string - Fichier demandé par l'utilisateur, ex: "@babel/env"
    • resolved: string - Chemin complet du fichier résolu, ex: "/tmp/node_modules/@babel/preset-env/lib/index.js"

DEFAULT_EXTENSIONS

babel.DEFAULT_EXTENSIONS: readonly string[];

Liste des extensions prises en charge par défaut par Babel (".js", ".jsx", ".es6", ".es", ".mjs", "cjs"). Utilisée par @babel/register et @babel/cli pour déterminer les fichiers à transpiler. Cette liste ne peut être étendue, mais @babel/cli permet de supporter d'autres extensions via --extensions.

Options

Voir la liste complète des options.