您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

Babel babel-generator

npm install --save-dev babel-generator

Babel babel-generator 使用

import {parse} from 'babylon';
import generate from 'babel-generator';

const code = 'class Example {}';
const ast = parse(code);

const output = generate(ast, { /* 选项 */ }, code);

Babel babel-generator 选项

格式化的选项:

选项名

类型

认值

描述

auxiliaryCommentBefore

string

可选字符串,在的开始块注释

auxiliaryCommentAfter

string

可选字符串,在的末尾块注释

shouldPrintComment

function

opts.comments

如果注释需要包含在中,该则需接受注释(作为字符串)并返回 true 。 认情况下,如果 opts.commoents 为 true 或者 opts.minifed 为 false 并且注释中包含 @preserve 或 @license,则包含注释。

retainLines

boolean

false

尝试在的中使用与源相同的行号(有助于保留栈信息跟踪)

retainFunctionParens

boolean

false

保留表达式的上下级 (可用于更改引擎解析行为)

comments

boolean

true

中是否包含注释

compact

boolean or 'auto'

opts.minified

设置为 true 以避免用于格式化的空格

minified

boolean

false

是否被压缩

concise

boolean

false

设置为 true 以减少空格 (但不如 opts.compact )

quotes

'single' or 'double'

基于 ast.tokens 的检测

中对引号的类型进行保留

filename

string

在警告信息中使用

flowCommaSeparator

boolean

false

设置为 true 以使用逗号而不是分号作为 Flow 的分隔符

jsonCompatibleStrings

boolean

false

设置为 true,使用 "json" 运行 jsesc:正确的将 "\u00A9" 打印为 "©" ;

source maps 的选项:

选项名

类型

认值

描述

sourceMaps

boolean

false

启用 source maps

sourceMapTarget

string

source map 会与的名进行关联

sourceRoot

string

source map 中所有对应 URLs 的 root

sourceFileName

string

源(例如, code 参数中的)的名。只会在 code 为字符串时使用。

多个来源构建 AST

在大多数情况下,Babel 会将输入与进行 1:1 转换。然而,你可能正在处理从多个来源构建的 AST - JS ,模板等。如果出现这种情况,并且你还希望 source map 为你提供正确的来源,则需要将对象作为 code 参数传递给 generate。其中键应该为源,值应该为源。

这是差不多的例子:

import {parse} from 'babylon';
import generate from 'babel-generator';

const a = 'var a = 1;';
const b = 'var b = 2;';
const astA = parse(a, { sourceFilename: 'a.js' });
const astB = parse(b, { sourceFilename: 'b.js' });
const ast = {
  type: 'Program',
  body: [].concat(astA.program.body, astB.program.body)
};

const { code, map } = generate(ast, { sourceMaps: true }, {
  'a.js': a,
  'b.js': b
});

// 在适当情况下,source map 会指向 a.js 和 b.js 。

联系我
置顶