原文:www.babeljs.cn/docs/babel-…
var babel = require("@babel/core");
import { transform } from "@babel/core";
import * as babel from "@babel/core";
所有转换都将使用本地配置文件。
transform
babel.transform(code: string, options?: Object, callback: Function)
转换传入的代码。使用生成的代码、源映射和AST调用回调。
babel.transform(code, options, function(err, result) {
result; // => { code, map, ast }
});
示例
babel.transform("code();", options, function(err, result) {
result.code;
result.map;
result.ast;
});
兼容注释: 在babel6中,这种方法是同步的,transformSync不存在。为了向后兼容,如果没有回调函数,这个函数将同步运行。如果您从babel7开始,需要同步行为,请使用transformSync,因为这个向后兼容可能会在Babel的未来主要版本中被删除。
transformSync
babel.transformSync(code: string, options?: Object)
转换传入的代码。返回包含生成的代码、源映射和AST的对象。
babel.transformSync(code, options) // => { code, map, ast }
示例
var result = babel.transformSync("code();", options);
result.code;
result.map;
result.ast;
transformAsync
babel.transformAsync(code: string, options?: Object)
转换传入的代码。使用生成的代码、源映射和AST返回对象的 promise。
babel.transformAsync(code, options) // => Promise<{ code, map, ast }>
示例
babel.transformAsync("code();", options).then(result => {
result.code;
result.map;
result.ast;
});
transformFile
babel.transformFile(filename: string, options?: Object, callback: Function)
异步转换文件的整个内容。
babel.transformFile(filename, options, callback)
示例
babel.transformFile("filename.js", options, function (err, result) {
result; // => { code, map, ast }
});
transformFileSync
babel.transformFileSync(filename: string, options?: Object)
babel.transformFile的同步版本. 返回文件名的已转换内容
babel.transformFileSync(filename, options) // => { code, map, ast }
示例
babel.transformFileSync("filename.js", options).code;
transformFileAsync
babel.transformFileAsync(filename: string, options?: Object)
Promise 版本babel.transformFile. 返回文件名转换后内容的Promise。
babel.transformFileAsync(filename, options) // => Promise<{ code, map, ast }>
示例
babel.transformFileAsync("filename.js", options).then(result => {
result.code;
});
transformFromAst
babel.transformFromAst(ast: Object, code?: string, options?: Object, callback: Function): FileNode | null
给定一个AST,转换它。
const sourceCode = "if (true) return;";
const parsedAst = babel.parse(sourceCode, { parserOpts: { allowReturnOutsideFunction: true } });
babel.transformFromAst(parsedAst, sourceCode, options, function(err, result) {
const { code, map, ast } = result;
});
兼容注释: 在babel6中,这个方法是同步的,transformFromAstSync不存在。为了向后兼容,如果没有回调函数,这个函数将同步运行。如果您从babel7开始,需要同步行为,请使用transformFromAstSync,因为这个向后兼容可能会在Babel的未来主要版本中被删除。
transformFromAstSync
babel.transformFromAstSync(ast: Object, code?: string, options?: Object)
给定一个AST,转换它。
const sourceCode = "if (true) return;";
const parsedAst = babel.parse(sourceCode, { parserOpts: { allowReturnOutsideFunction: true } });
const { code, map, ast } = babel.transformFromAstSync(parsedAst, sourceCode, options);
transformFromAstAsync
babel.transformFromAstAsync(ast: Object, code?: string, options?: Object)
给定一个AST,转换它。
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)
给定一些代码,使用Babel的标准行为解析它。引用的预置和插件将被加载,以便自动启用可选语法插件。
兼容注释: 在babel7的早期betas中,这个方法是同步的,parseSync不存在。为了向后兼容,如果没有回调函数,这个函数将同步运行。如果您开始使用babel7稳定版并且需要同步行为,请使用parseSync,因为这个向后兼容可能会在Babel的未来主要版本中被删除。
parseSync
babel.parseSync(code: string, options?: Object)
返回AST。
给定一些代码,使用Babel的标准行为解析它。引用的预置和插件将被加载,以便自动启用可选语法插件。
parseAsync
babel.parseAsync(code: string, options?: Object)
返回AST的promise 。
给定一些代码,使用Babel的标准行为解析它。引用的预置和插件将被加载,以便自动启用可选语法插件。
高级API
许多包装Babel的系统喜欢自动注入插件和预置,或者覆盖选项。为了实现这个目标,Babel公开了几个函数,这些函数有助于在不进行转换的情况下部分加载配置。
loadOptions
babel.loadOptions(options?: Object)
完全解析Babel的选项,生成一个options对象,其中:
- opts.plugins是插件实例的完整列表。
- opts.presets为空,并且所有预设都被展平为opts。
- 它可以安全地传递回Babel。像“babelrc”这样的字段已经被设置为false,这样以后对Babel的调用将不会再次尝试加载配置文件。
插件实例并不是要直接操作的,但调用方通常会将此opts序列化为JSON,以将其用作表示Babel接收到的选项的缓存键。缓存不能100%保证正确失效,但这是目前最好的。
loadPartialConfig
babel.loadPartialConfig(options?: Object): PartialConfig
为了使系统能够轻松地操作和验证用户的配置,此函数解析插件和预置,不再继续。我们的期望是,调用者将使用config.options,在他们认为合适的时候操作它,并再次将其传递回Babel。
- babelrc: string | void - 文件相对配置文件的路径(如果有)。
- babelignore: string | void - .babelignore文件的路径,如果有的话。
- config: string | void - 项目范围配置文件的路径(如果有)。
- options: ValidatedOptions -部分解决的选项,可以操纵和传递回Babel 。
- plugins: Array - 见下文
- presets: Array -见下文
- 它可以安全地传递回Babel。像“babelrc”这样的选项已经被设置为false,这样以后对Babel的调用将不会再次尝试加载配置文件。
- hasFilesystemConfig(): boolean -检查已解析的配置是否从文件系统加载了任何设置。
ConfigItem实例公开属性以内省值,但每个项都应视为不可变的。如果需要更改,则应该从列表中删除该项,并将其替换为正常的Babel config值,或者使用由创建的替换项babel.createConfigItem. 有关ConfigItem字段的信息,请参见该函数。
createConfigItem
babel.createConfigItem(value: string | {} | Function | [string | {} | Function, {} | void], { dirname?: string, type?: "preset" | "plugin" }): ConfigItem
允许构建工具预先创建和缓存配置项。如果对一个给定的插件多次调用这个函数,Babel将多次调用该插件的函数本身。如果您有一组明确的预期插件和预置要注入,建议预先构造配置项。
ConfigItem type
每个ConfigItem公开Babel知道的所有信息。字段包括:
- value: {} | Function - 插件的解析值。
- options: {} | void -传递给插件的options对象。
- dirname: string -选项相对于的路径。
- name: string | void - 用户给插件实例的名称,例如plugins:[['env',{},'my env']]
- file: Object | void - 关于插件文件的信息,如果Babel知道的话。
- request: string - 用户请求的文件,例如“@babel/env”
- resolved: string -解析文件的完整路径,例如"/tmp/node_modules/@babel/preset-env/lib/index.js"
默认扩展名
babel.DEFAULT_EXTENSIONS: ReadonlyArray
babel支持的默认扩展列表(“.js”、“.jsx”、“.es6”、“.es”、“.mjs”)。此列表由@babel/register和@babel/cli用于确定哪些文件需要传输。扩展这个列表是不可能的,但是@babel/cli提供了一些方法来支持带有--extensions的其他扩展。
选项
请参阅此处的完整选项列表。