estree VS esprima

Compare estree vs esprima and see what are their differences.

Our great sponsors
  • SurveyJS - Open-Source JSON Form Builder to Create Dynamic Forms Right in Your App
  • InfluxDB - Power Real-Time Data Analytics at Scale
  • WorkOS - The modern identity platform for B2B SaaS
estree esprima
8 8
4,958 6,962
1.2% 0.4%
5.3 0.0
6 months ago about 1 year ago
TypeScript
GNU General Public License v3.0 or later BSD 2-clause "Simplified" License
The number of mentions indicates the total number of mentions that we've tracked plus the number of user suggested alternatives.
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.

estree

Posts with mentions or reviews of estree. We have used some of these posts to build our list of alternatives and similar projects. The last one was on 2023-03-30.
  • ESLint Understand By Doing Part 1: Abstract Syntax Trees
    2 projects | dev.to | 30 Mar 2023
    ESLint's AST format, ESTree, would represent this line of code as:
  • Eglot has landed on master: Emacs now has a built-in LSP client
    10 projects | news.ycombinator.com | 23 Oct 2022
    That was a super interesting link, thank you.

    For the ontological problem, I presume you're referring to how there are so many differing ideas of how to represent ASTs (apologies for mixing languages, these URLs were just handy):

    * https://lisperator.net/uglifyjs/ast#nodes

    * https://github.com/estree/estree#the-estree-spec

    * ... likely others

    which makes it hard for ls1 to ask ls2 about "the for-of iteration variable Node" because ls2 could be using UglifyJS or ESTree or their own(!) AST nomenclature?

    And all of this is made worse by (e.g.) Java1.3 versus Java19 because languages are rarely static

  • Statements vs. Expressions
    2 projects | news.ycombinator.com | 14 Jul 2022
    I find it better to actually look at the AST for javascript.

    These are expressions:

    https://github.com/estree/estree/blob/master/es5.md#expressi...

    These are statements:

    https://github.com/estree/estree/blob/master/es5.md#statemen...

    I guess the confusing part for many is how an expression can also be a statement. But if you look at the ExpressionStatement you see that an expression is not also a statement. It's just the wrapper statement!

  • A technical tale of NodeSecure - Chapter 2
    7 projects | dev.to | 6 Jun 2022
    When I started the NodeSecure project I had almost no experience 🐤 with AST (Abstract Syntax Tree). My first time was on the SlimIO project to generate codes dynamically with the astring package (and I had also looked at the ESTree specification).
  • Show HN: Monocle – bidirectional code generation library
    10 projects | news.ycombinator.com | 12 Apr 2022
  • Go is the future of Frontend infrastructure
    5 projects | dev.to | 1 Dec 2021
    ESTree compatible output, AST explorer on WASM
  • Introducing GraphQL-ESLint!
    2 projects | dev.to | 29 Jul 2021
    The parser we wrote transforms the GraphQL AST into ESTree structure, so it allows you to travel the GraphQL AST tree easily.
  • Revealing the magic of AST by writing babel plugins
    2 projects | dev.to | 5 Mar 2021
    For espree parser(the one eslint uses) we can refer here Eslint AST Node Types

esprima

Posts with mentions or reviews of esprima. We have used some of these posts to build our list of alternatives and similar projects. The last one was on 2023-11-07.
  • ESLint: under the hood
    4 projects | dev.to | 7 Nov 2023
    Focusing again on ESLint, the parser used by the linter is called Espree. This is an in-house parser built by the ESLint folks to fully support ECMAScript 6 and JSX on top of the already existing Esprima. The Espree module provide APIs for both tokenization and parsing that you can easily test out.
  • Why you don’t need TypeScript
    1 project | /r/typescript | 19 May 2023
    For TypeScript we have used AST transforms from their compiler API, and for plain JavaScript we did a similar thing using ESPrima. This helped us implement some simple optimizations like stream fusion (combining .filter and .map into a single operation) or avoiding extra object allocations in vector math, which led to nice performance improvements in code that does heavy computation (we process large amounts of data on the server and store results of physics simulations).
  • Algorithm to simplify a 100-variable Boolean expression?
    1 project | /r/algorithms | 4 Jun 2022
    I used ESPrima, but any parser would do in this case. I then wrote a simple function to extract all "atomic" non-boolean expressions from it.
  • How to make your own programming language in JavaScript
    6 projects | dev.to | 7 May 2022
    AST is an acronym for Abstract Syntax Tree. It's the way to represent code in a format that tools can understand. Usually in form of tree data structure. We will use AST in the format of an Esprima, which is a JavaScript parser that outputs AST.
  • What the heck is an Abstract Syntax Tree (AST) ?
    5 projects | dev.to | 23 Apr 2022
    esprima
  • Abstract Syntax Trees: They're Actually Used Everywhere -- But What Are They?
    4 projects | dev.to | 17 Nov 2021
    Create an AST: Esprima
  • We Switched from Webpack to Vite
    15 projects | news.ycombinator.com | 28 Apr 2021
    The thread was originally about CRA vs Vite size on disk (or implicitly, if we're applying it to real world applications, network cost in CI job startup times). And like I said, surrogate pairs don't apply to ASCII.

    See this[0] for reference. Note how the first byte must fall within a certain range in order to signal being a surrogate pair. This fact is taken advantage of by JS parsers to make parsing of ASCII code faster by special casing that range, since checking for a valid character in the entire unicode range is quite a bit more expensive[1].

    [0] https://github.com/jquery/esprima/blob/0911ad869928fd218371b...

    [1] https://github.com/jquery/esprima/blob/0911ad869928fd218371b...

  • How to create your own language that compile to JavaScript
    3 projects | /r/javascript | 15 Apr 2021
    If you want to learn more about parsing, reading the code of an actual recursive parser might be a better idea. Esprima is a decent place to start if you're interested in JS grammar. Then you can look at the babel handbook to learn more about AST transformations. From there, the literature gets quite a bit more heavy. If you get this far and are willing to push further, you'll probably want to grab yourself a copy of the dragon book at a minimum.

What are some alternatives?

When comparing estree and esprima you can also consider the following projects:

babel-parser

estraverse - ECMAScript JS AST traversal functions

escodegen - ECMAScript code generator

esbuild-loader - Webpack loader for esbuild: Speed up your build ⚡️

kataw - An 100% spec compliant ES2022 JavaScript toolchain

babel-handbook - :blue_book: A guided handbook on how to use Babel and how to create plugins for Babel.

Acorn - A small, fast, JavaScript-based JavaScript parser

qwik - Instant-loading web apps, without effort

vite-plugin-vue2 - Vue2 plugin for Vite

Visual Studio Code - Visual Studio Code