@babel/core
Questa pagina è stata tradotta da PageTurner AI (beta). Non ufficialmente approvata dal progetto. Hai trovato un errore? Segnala problema →
var babel = require("@babel/core");
import { transform } from "@babel/core";
import * as babel from "@babel/core";
Tutte le trasformazioni utilizzeranno i tuoi file di configurazione locali.
transform
babel.transform(code: string, options?: Object, callback: Function)
Trasforma il code passato come argomento. Richiama una callback con un oggetto contenente il codice generato, la source map e l'AST.
babel.transform(code, options, function(err, result) {
result; // => { code, map, ast }
});
Esempio
babel.transform("code();", options, function(err, result) {
result.code;
result.map;
result.ast;
});
In Babel 6, questo metodo era sincrono e transformSync non esisteva. Per compatibilità con le versioni precedenti, questa funzione si comporterà in modo sincrono se non viene fornita una callback. Se stai iniziando con Babel 7 e hai bisogno di un comportamento sincrono, utilizza transformSync poiché questa compatibilità verrà rimossa in Babel 8.
transformSync
babel.transformSync(code: string, options?: Object)
Trasforma il code passato come argomento. Restituisce un oggetto contenente il codice generato, la source map e l'AST.
babel.transformSync(code, options); // => { code, map, ast }
Esempio
var result = babel.transformSync("code();", options);
result.code;
result.map;
result.ast;
transformAsync
babel.transformAsync(code: string, options?: Object)
Trasforma il code passato come argomento. Restituisce una promise per un oggetto contenente il codice generato, la source map e l'AST.
babel.transformAsync(code, options); // => Promise<{ code, map, ast }>
Esempio
babel.transformAsync("code();", options).then(result => {
result.code;
result.map;
result.ast;
});
transformFile
babel.transformFile(filename: string, options?: Object, callback: Function)
Trasforma in modo asincrono l'intero contenuto di un file.
babel.transformFile(filename, options, callback);
Esempio
babel.transformFile("filename.js", options, function(err, result) {
result; // => { code, map, ast }
});
transformFileSync
babel.transformFileSync(filename: string, options?: Object)
Versione sincrona di babel.transformFile. Restituisce il contenuto trasformato del filename.
babel.transformFileSync(filename, options); // => { code, map, ast }
Esempio
babel.transformFileSync("filename.js", options).code;
transformFileAsync
babel.transformFileAsync(filename: string, options?: Object)
Versione promise-based di babel.transformFile. Restituisce una promise per il contenuto trasformato del filename.
babel.transformFileAsync(filename, options); // => Promise<{ code, map, ast }>
Esempio
babel.transformFileAsync("filename.js", options).then(result => {
result.code;
});
transformFromAst
babel.transformFromAst(ast: Object, code?: string, options?: Object, callback: Function): FileNode | null
Data un'AST, la trasforma.
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;
});
In Babel 6, questo metodo era sincrono e transformFromAstSync non esisteva. Per compatibilità con le versioni precedenti, questa funzione si comporterà in modo sincrono se non viene fornita una callback. Se stai iniziando con Babel 7 e hai bisogno di un comportamento sincrono, utilizza transformFromAstSync poiché questa compatibilità verrà rimossa in Babel 8.
transformFromAstSync
babel.transformFromAstSync(ast: Object, code?: string, options?: Object)
Data un'AST, la trasforma.
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)
Data un'AST, la trasforma.
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)
Dato del codice, lo analizza utilizzando il comportamento standard di Babel. I preset e i plugin referenziati verranno caricati in modo che le estensioni sintattiche opzionali siano abilitate automaticamente.
Nelle prime beta di Babel 7, questo metodo era sincrono e parseSync non esisteva.
Per compatibilità con le versioni precedenti, questa funzione si comporterà in modo sincrono
se non viene fornita una callback. Se stai utilizzando Babel 7 stabile e necessiti
di un comportamento sincrono, utilizza parseSync poiché questa compatibilità
verrà rimossa in Babel 8.
parseSync
babel.parseSync(codice: string, opzioni?: Object)
Restituisce un AST.
Dato del codice, lo analizza utilizzando il comportamento standard di Babel. I preset e i plugin referenziati verranno caricati in modo che le estensioni sintattiche opzionali siano abilitate automaticamente.
parseAsync
babel.parseAsync(codice: string, opzioni?: Object)
Restituisce una promise per un AST.
Dato del codice, lo analizza utilizzando il comportamento standard di Babel. I preset e i plugin referenziati verranno caricati in modo che le estensioni sintattiche opzionali siano abilitate automaticamente.
API Avanzate
Molti sistemi che integrano Babel preferiscono iniettare automaticamente plugin e preset, o sovrascrivere le opzioni. Per questo scopo, Babel espone diverse funzioni che aiutano a caricare parzialmente la configurazione senza eseguire trasformazioni.
loadOptions
babel.loadOptions(opzioni?: Object)
Risolvi completamente le opzioni di Babel, ottenendo un oggetto opzioni dove:
-
opts.pluginsè una lista completa di istanzePlugin. -
opts.presetsè vuoto e tutti i preset sono appiattiti inopts. -
Può essere passato in sicurezza a Babel. Campi come
"babelrc"sono impostati sufalsein modo che chiamate successive a Babel non tentino di caricare nuovamente file di configurazione.
Le istanze Plugin non sono pensate per essere manipolate direttamente, ma spesso
i chiamanti serializzano questo opts in JSON per usarlo come chiave di cache rappresentante
le opzioni ricevute da Babel. La cache su questo non garantisce al 100%
un'invalidazione corretta, ma rappresenta attualmente la soluzione migliore.
loadPartialConfig
babel.loadPartialConfig(opzioni?: Object): PartialConfig
Per permettere ai sistemi di manipolare e validare facilmente la configurazione utente, questa funzione
risolve plugin e preset senza procedere oltre. Si prevede che i chiamanti
prendano .options della configurazione, la manipolino a piacere
e la ripassino a Babel.
Questa funzione accetta un'opzione aggiuntiva nell'oggetto opzioni oltre alle opzioni standard: showIgnoredFiles.
Quando impostata su true, loadPartialConfig restituisce sempre un risultato quando un file viene ignorato, anziché null.
Questo è utile per permettere al chiamante di accedere alla lista dei file che hanno influenzato l'esito, ad esempio
per la modalità watch. Il chiamante può determinare se un file è stato ignorato in base alla proprietà fileHandling restituita.
-
babelrc: string | void- Il percorso del file di configurazione relativo al file, se presente. -
babelignore: string | void- Il percorso del file.babelignore, se presente. -
config: string | void- Il percorso del file di configurazione globale del progetto, se presente. -
options: ValidatedOptions- Le opzioni parzialmente risolte, che possono essere modificate e ripassate a Babel.plugins: Array<ConfigItem>- Vedi sotto.presets: Array<ConfigItem>- Vedi sotto.- Può essere passato nuovamente a Babel in sicurezza. Opzioni come
"babelrc"sono impostate su false per evitare che chiamate successive a Babel tentino di ricaricare file di configurazione.
-
hasFilesystemConfig(): boolean- Verifica se la configurazione risolta ha caricato impostazioni dal filesystem. -
fileHandling- Impostato a"transpile","ignored"o"unsupported"per indicare all'utente come gestire questo file. -
files- UnSetdi percorsi file letti per costruire la configurazione risultante, inclusi file di configurazione globali, locali, file di configurazione estesi, file ignore, ecc. Utile per implementare watch mode o invalidamento cache.
Le istanze di ConfigItem espongono proprietà per introspezione dei valori, ma ogni
elemento deve essere trattato come immutabile. Se sono necessarie modifiche, l'elemento dovrebbe essere
rimosso dalla lista e sostituito con un normale valore di configurazione Babel,
o con un elemento sostitutivo creato da babel.createConfigItem. Vedi la funzione
per informazioni sui campi di ConfigItem.
createConfigItem
babel.createConfigItem(value: string | {} | Function | [string | {} | Function, {} | void], { dirname?: string, type?: "preset" | "plugin" }): ConfigItem
Consente ai tool di build di creare e memorizzare in cache elementi di configurazione in anticipo. Se questa funzione viene chiamata più volte per un plugin specifico, Babel chiamerà la funzione del plugin più volte. Se hai un set chiaro di plugin e preset da iniettare, è consigliabile pre-costruire gli elementi di configurazione.
Tipo ConfigItem
Ogni ConfigItem espone tutte le informazioni note a Babel. I campi sono:
-
value: {} | Function- Il valore risolto del plugin. -
options: {} | void- L'oggetto opzioni passato al plugin. -
dirname: string- Il percorso relativo a cui le opzioni fanno riferimento. -
name: string | void- Il nome assegnato dall'utente all'istanza del plugin, es.plugins: [ ['env', {}, 'my-env'] ] -
file: Object | void- Informazioni sul file del plugin, se note a Babel.request: string- Il file richiesto dall'utente, es."@babel/env"resolved: string- Il percorso completo del file risolto, es."/tmp/node_modules/@babel/preset-env/lib/index.js"
DEFAULT_EXTENSIONS
babel.DEFAULT_EXTENSIONS: readonly string[];
Lista di estensioni predefinite supportate da Babel (".js", ".jsx", ".es6", ".es", ".mjs", ".cjs").
Utilizzata da @babel/register e @babel/cli per determinare quali file richiedono transpilazione.
Non è possibile estendere questa lista, tuttavia @babel/cli offre modi per supportare altre estensioni con --extensions.