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 |
|
12 | Convert [estree](https://github.com/estree/estree) compatible `JavaScript AST` to `babel AST`.
|
13 |
|
14 | To 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 |
|
21 | With `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 |
|
27 | The 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 | ```
|
44 | npm i estree-to-babel
|
45 | ```
|
46 |
|
47 | ### Example
|
48 |
|
49 | ```js
|
50 | const cherow = require('cherow');
|
51 | const toBabel = require('estree-to-babel');
|
52 | const traverse = require('@babel/traverse').default;
|
53 |
|
54 | const ast = toBabel(cherow.parse(`
|
55 | const f = ({a}) => a;
|
56 | `));
|
57 |
|
58 | traverse({
|
59 | ObjectProperty(path) {
|
60 | console.log(path.value.name);
|
61 | // output
|
62 | 'a';
|
63 | },
|
64 | });
|
65 | ```
|
66 |
|
67 | ## License
|
68 |
|
69 | MIT
|