babel-to-estree

0.0.3 • Public • Published

babel-to-estree

Translates a "Babel AST" to an "ESTree AST". Intended for cases when an AST must be consumed by an ESTree-compliant consumer after a babel-plugin traversal.

If you only need a babylon-parsed AST, and do not need traversal, try the "estree" plugin that babylon now offers instead.

Usage

import { transform } from 'babel-core'
import { toEstree } from 'babel-to-estree'
import myPlugin from './my-babel-plugin'
 
const source = 'code("here");'
 
const { ast, code } = transform(source, { plugins: [myPlugin] })
 
// mutates `ast` input
toEstree(ast, source);
 
// contains Literal, not StringLiteral
console.log(ast.body[0].expression.arguments[0])
 
// Node {
//   type: 'Literal',
//   start: 5,
//   end: 11,
//   loc: SourceLocation {
//     start: Position { line: 1, column: 5 },
//     end: Position { line: 1, column: 11 } },
//   extra: { rawValue: 'here', raw: '"here"' },
//   value: 'here',
//   range: [ 5, 11 ],
//   _babelType: 'StringLiteral',
//   raw: '"here"'
// }

Deviations Addressed

The Babel AST format is based on ESTree spec with the following deviations:

AST for JSX code is based on Facebook JSX AST with the addition of one node type:

  • JSXText

History

Based on the babylon-to-espree module of babel-eslint, which was in turn based on acorn-to-esprima.

Readme

Keywords

none

Package Sidebar

Install

npm i babel-to-estree

Weekly Downloads

5

Version

0.0.3

License

MIT

Last publish

Collaborators

  • rattrayalex