Package Exports
- babel-to-estree
This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (babel-to-estree) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.
Readme
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:
- 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
directivesfield 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.