Nondeterministic Programming Methodology
    Share your code. npm Orgs help your team discover, share, and reuse code. Create a free org »

    babylonpublic

    babylon

    Babylon is a JavaScript parser used in Babel.

    Travis Status Codecov Status

    • The latest ECMAScript version enabled by default (ES2017).
    • Comment attachment.
    • Support for JSX and Flow.
    • Support for experimental language proposals (accepting PRs for anything at least stage-0).

    Credits

    Heavily based on acorn and acorn-jsx, thanks to the awesome work of @RReverser and @marijnh.

    Significant diversions are expected to occur in the future such as streaming, EBNF definitions, sweet.js integration, interspatial parsing and more.

    API

    babylon.parse(code, [options])

    babylon.parseExpression(code, [options])

    parse() parses the provided code as an entire ECMAScript program, while parseExpression() tries to parse a single Expression with performance in mind. When in doubt, use .parse().

    Options

    • allowImportExportEverywhere: By default, import and export declarations can only appear at a program's top level. Setting this option to true allows them anywhere where a statement is allowed.

    • allowReturnOutsideFunction: By default, a return statement at the top level raises an error. Set this to true to accept such code.

    • allowSuperOutsideMethod: TODO

    • sourceType: Indicate the mode the code should be parsed in. Can be either "script" or "module".

    • sourceFilename: Correlate output AST nodes with their source filename. Useful when generating code and source maps from the ASTs of multiple input files.

    • startLine: By default, the first line of code parsed is treated as line 1. You can provide a line number to alternatively start with. Useful for integration with other source tools.

    • plugins: Array containing the plugins that you want to enable.

    • strictMode: TODO

    Output

    Babylon generates AST according to Babel AST format. It is based on ESTree spec with the following deviations:

    There is now an estree plugin which reverts these deviations

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

    • JSXText

    Semver

    Babylon follows semver in most situations. The only thing to note is that some spec-compliancy bug fixes may be released under patch versions.

    For example: We push a fix to early error on something like #107 - multiple default exports per file. That would be considered a bug fix even though it would cause a build to fail.

    Example

    require("babylon").parse("code", {
      // parse in strict mode and allow module declarations 
      sourceType: "module",
     
      plugins: [
        // enable jsx and flow syntax 
        "jsx",
        "flow"
      ]
    });

    Plugins

    • estree
    • jsx
    • flow
    • doExpressions
    • objectRestSpread
    • decorators (Based on an outdated version of the Decorators proposal. Will be removed in a future version of Babylon)
    • classProperties
    • exportExtensions
    • asyncGenerators
    • functionBind
    • functionSent
    • dynamicImport
    • templateInvalidEscapes

    install

    npm i babylon

    Downloadslast 7 days

    5,789,965

    version

    6.18.0

    license

    MIT

    homepage

    babeljs.io

    repository

    github.com

    last publish

    collaborators

    • avatar
    • avatar
    • avatar
    • avatar
    • avatar
    • avatar
    • avatar
    • avatar