@babel/core
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 →
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.
babel.transform(code, options, function(err, result) {
result; // => { code, map, ast }
});
Exemple
babel.transform("code();", options, function(err, result) {
result.code;
result.map;
result.ast;
});
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.
babel.transformSync(code, options); // => { code, map, ast }
Exemple
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.
babel.transformAsync(code, options); // => Promise<{ code, map, ast }>
Exemple
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.
babel.transformFile(filename, options, callback);
Exemple
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.
babel.transformFileSync(filename, options); // => { code, map, ast }
Exemple
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.
babel.transformFileAsync(filename, options); // => Promise<{ code, map, ast }>
Exemple
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é.
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;
});
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é.
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é.
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.
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.pluginsest une liste complète d'instances dePlugin. -
opts.presetsest vide et tous les presets sont fusionnés dansopts. -
Il peut être repassé à Babel en toute sécurité. Des champs comme
"babelrc"sont positionnés àfalsepour é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.babelignores'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-Setdes 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.