Skip to content
On this page

@babel/generator @babel/parser

TIP

@babel/parser 转成ast @babel/generator 生成代码code

@babel/parser

TIP

把一段代码转成ast, 使用如下:

js
import { parse } from '@babel/core';

const code = `const a = 123;`

const parseCode = parse(code, {
  sourceType: 'unambiguous' // "script", "module", or "unambiguous". Defaults to "script".
})

console.log(parseCode);

输出:

bash
Node {
  type: 'File',
  start: 0,
  end: 14,
  loc: SourceLocation {
    start: Position { line: 1, column: 0, index: 0 },
    end: Position { line: 1, column: 14, index: 14 },
    filename: undefined,
    identifierName: undefined
  },
  errors: [],
  program: Node {
    type: 'Program',
    start: 0,
    end: 14,
    loc: SourceLocation {
      start: [Position],
      end: [Position],
      filename: undefined,
      identifierName: undefined
    },
    sourceType: 'script',
    interpreter: null,
    body: [ [Node] ],
    directives: []
  },
  comments: []
}

可以去astexplorer 查看具体AST

@babel/generator

TIP

咱们继续接着上面写,把上面一段ast给转化成code,使用方式如下:

js
import { parse } from '@babel/core';
import generate from '@babel/generator';

const code = `const a = 123;`;

const parseCode = parse(code, {
  sourceType: 'unambiguous' // "script", "module", or "unambiguous". Defaults to "script".
})

const { code: generateCode } = generate(parseCode);
console.log(generateCode,'generateCode')

输出:

bash
const a = 123; generateCode

Released under the MIT License.