UNPKG

2.42 kBMarkdownView Raw
1# Estree-to-babel [![NPM version][NPMIMGURL]][NPMURL] [![Dependency Status][DependencyStatusIMGURL]][DependencyStatusURL] [![Build Status][BuildStatusIMGURL]][BuildStatusURL] [![Coverage Status][CoverageIMGURL]][CoverageURL]
2
3[NPMIMGURL]: https://img.shields.io/npm/v/estree-to-babel.svg?style=flat&longCache=true
4[BuildStatusIMGURL]: https://img.shields.io/travis/coderaiser/estree-to-babel/master.svg?style=flat&longCache=true
5[DependencyStatusIMGURL]: https://img.shields.io/david/coderaiser/estree-to-babel.svg?style=flat&longCache=true
6[NPMURL]: https://npmjs.org/package/estree-to-babel "npm"
7[BuildStatusURL]: https://travis-ci.org/coderaiser/estree-to-babel "Build Status"
8[DependencyStatusURL]: https://david-dm.org/coderaiser/estree-to-babel "Dependency Status"
9[CoverageURL]: https://coveralls.io/github/coderaiser/estree-to-babel?branch=master
10[CoverageIMGURL]: https://coveralls.io/repos/coderaiser/estree-to-babel/badge.svg?branch=master&service=github
11
12Convert [estree](https://github.com/estree/estree) compatible `JavaScript AST` to `babel AST`.
13
14To use parsers like:
15
16- [acorn](https://github.com/acornjs/acorn)
17- [cherow](https://github.com/cherow/cherow)
18- [espree](https://github.com/eslint/espree)
19- etc...
20
21With `babel` tools like:
22
23- [@babel/traverse](https://babeljs.io/docs/en/babel-traverse)
24- [@babel/types](https://babeljs.io/docs/en/babel-types)
25- etc...
26
27The thing is `@babel/parser` has a [little differences](https://babeljs.io/docs/en/babel-parser#output) with `estree` standard:
28
29- `Property` of `ObjectExpression` called `ObjectProperty`;
30- `FunctionExpression` of a `Property` located in `ObjectMethod` node;
31- `File` node;
32- `StringLiteral`, `NumericLiteral`, `NullLiteral`, `RegExpLiteral`, `BooleanLiteral` instead of `Literal`;
33- `ClassMethod` instead of `MethodDefinition`;
34- `ClassPrivateMethod`
35- `ClassPrivateName` stores name as `Identifier` in `id` field;
36- `ClassPrivateProperty` instead of `FieldDefinition`;
37- etc...
38
39`estree-to-babel` aims to smooth this differences.
40
41## Install
42
43```
44npm i estree-to-babel
45```
46
47### Example
48
49```js
50const cherow = require('cherow');
51const toBabel = require('estree-to-babel');
52const traverse = require('@babel/traverse').default;
53
54const ast = toBabel(cherow.parse(`
55 const f = ({a}) => a;
56`));
57
58traverse({
59 ObjectProperty(path) {
60 console.log(path.value.name);
61 // output
62 'a';
63 },
64});
65```
66
67## License
68
69MIT