Babel babel-core

Babel babel-core

var babel = require("babel-core");
import { transform } from 'babel-core';
import * as babel from 'babel-core';

所有的转译都将使用本地配置文件( .babelrc 或者 package.json )。 可以通过查看 options 禁用它。

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

将传入的 code 进行转换。返回值为一个对象,参数分别为生成的代码,source map 以及 AST 。

babel.transform(code, options) // => { code, map, ast }

示例

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

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 }
});

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

babel.transformFile 的同步版本。返回值为 filename 文件中转译后的代码。

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

示例

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

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

给定一个 AST ,将它进行转换。

const code = "if (true) return;";
const ast = babylon.parse(code, { allowReturnOutsideFunction: true });
const { code, map, ast } = babel.transformFromAst(ast, code, options);

选项

Babel CLI 你可以在 Babel CLI 中使用这些选项,形式如下:babel --name=value

可以使用的选项列表如下:

可选参数

默认值

描述

ast

true

在返回值对象中包含 AST

auxiliaryCommentAfter

null

在所有非用户编写代码后附加注释。

auxiliaryCommentBefore

null

在所有非用户编写代码前附加注释。

babelrc

true

指定是否使用 .babelrc 和 babelignore 文件。使用 CLI 工具时不能使用该选项,请使用 --no-babelrc 代替。

code

true

启用代码生成选项。

comments

true

在生成的代码中添加注释。

compact

"auto"

不要包含多余的空格符和换行符。设置为 "auto" 时,当输入大小 > 500KB 时,compact 会被设置为 true。

env

{}

这是表示不同环境的键的对象。例如,当环境变量 BABEL_ENV 设置为 "production" 时,可以像这样设置 { env: { production: { /* specific options */ } } }。如果 BABEL_ENV 未设置,那么 NODE_ENV 将被启用,如果 NODE_ENV 也未被设置,则默认为 "development" 环境。

extends

null

扩展 .babelrc 文件的路径

filename

"unknown"

在错误信息是使用的文件名等。

filenameRelative

(filename)

相对于 sourceRoot 的文件名。

generatorOpts

{}

包含要传递给 babel 代码生成器(babel-generator)的选项对象。

getModuleId

null

指定一个自定义回调来生成模块 ID 。调用方式为 getModuleId(moduleName)。如果返回值为 falsy ,则说明生成的模块 ID 被使用。

highlightCode

true

ANSI 错误语法高亮显示。

ignore

null

与 only 选项相对。如果只指定 only,则 ignore 则被忽略。

inputSourceMap

null

输出的 source map 将基于该 source map 对象。

minified

false

保证输出最小化(不输出代码块最后一个分号,输出文字为字符串而不是转义字符串,安全情况下 new 后的 () 会被去除)

moduleId

null

指定模块 ID 的自定义名称。

moduleIds

false

如果值为 true,为模块添加一个明确的 ID 。默认情况下,所有模块都是匿名的。(不适用于 common 模块)

moduleRoot

(sourceRoot)

AMD 模块格式化程序的可选前缀,可以被预先添加到模块定义的文件名当中。

only

null

可填入一个 glob,正则表达式或者包含前者的混合数组,只编译匹配到的路径。也可以是包含明确匹配路径的数组。在尝试编译非匹配的文件时,它将原样返回。

parserOpts

{}

需要传递给 babel 解析器,babylon 的选项对象

plugins

[]

需要加载和使用的插件列表。

presets

[]

需要加载和使用的 presets (一组插件) 列表。

retainLines

false

保留行号。这将导致代码变得很古怪,但对于不能使用 source map 的场景来说很方便。(注意: 这不会对列进行保留)

resolveModuleSource

null

解析模块入口,例如 import "SOURCE"; 引入自定义值。具体调用为 resolveModuleSource(source, filename) 。

shouldPrintComment

null

一个可选的回调,控制是否需要输出注释。具体调用为 shouldPrintComment(commentContents) 。 注意: 该选项使用时会覆盖 comment 选项。

sourceFileName

(filenameRelative)

在返回的 source map 上设置 sources[0]。

sourceMaps

false

如果为 true ,添加一个 map 属性在输出的返回值中。如果设置为 "inline" ,带有 sourceMappingURL 指令的注释被添加到返回代码的底部。如果设置为 "both" ,则会返回 map 属性并追加 source map 注释。它不会自己生成 sourcemap 文件! 要想让 CLI 生成 sourcemap ,你必须给它传递 --source-maps 选项。

sourceMapTarget

(filenameRelative)

在返回 souremap 时设置 file。

sourceRoot

(moduleRoot)

所有 source 都是相对于 root 的。

sourceType

"module"

设置 babel 解析代码的模式。可以设置为 "script" 或 "module" 。

wrapPluginVisitorMethod

null

可用于包装访问者模式的可选回调。注意: 这对于自我检查这样的事是有必要的,并且不需要实现任何方法。具体调用为 wrapPluginVisitorMethod(pluginAlias, visitorType, callback) 。