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
const source = 'code("here");' const ast code = // mutates `ast` input; // contains Literal, not StringLiteralconsole // 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:
- Literal token is replaced with StringLiteral, NumericLiteral, BooleanLiteral, NullLiteral, RegExpLiteral
- Property token is replaced with ObjectProperty and ObjectMethod
- MethodDefinition is replaced with ClassMethod
- Program and BlockStatement contain additional
directives
field with Directive and DirectiveLiteral - ClassMethod, ObjectProperty, and ObjectMethod value property's properties in FunctionExpression is coerced/brought into the main method node.
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.