It's actually simpler than I thought...

So it turns out that since @babel/plugin-proposal-class-properties is a babel plugin, it needs to be declared in the plugins property of babel's configuration. According to the documentation of @babel/eslint-parser, those can be passed in with babelOptions property.

Therefore it's really as simple as this:

...
  "parserOptions": {
    ...
    "babelOptions": {
      "plugins": [
        "@babel/plugin-proposal-class-properties",
        ...
      ],
    },
  },
  "plugins": [
    "@babel",
  ],
...
Answer from cyqsimon on Stack Overflow
🌐
npm
npmjs.com › package › @babel › eslint-parser
@babel/eslint-parser - npm
January 12, 2026 - ESLint parser that allows for linting of experimental syntax transformed by Babel. Latest version: 7.28.6, last published: 2 months ago. Start using @babel/eslint-parser in your project by running `npm i @babel/eslint-parser`. There are 1990 ...
      » npm install @babel/eslint-parser
    
Published   Jan 12, 2026
Version   7.28.6
Homepage   https://babel.dev/
🌐
Babel
babeljs.io › @babel/eslint-parser
@babel/eslint-parser · Babel
@babel/eslint-parser allows you to lint all valid Babel code with the fantastic
Discussions

Declaring babel plugins for @babel/eslint-parser in .eslintrc
I've been trying for a while now to get @babel/plugin-proposal-class-properties plugin to work nicely with @babel/eslint-parser and eslint without success. This is my .eslintrc.js: ... "parser& More on stackoverflow.com
🌐 stackoverflow.com
reactjs - Error: Failed to load parser 'babel-eslint' declared in '.eslintrc': Cannot find module 'babel-eslint' in create-react-app - Stack Overflow
I completely dismissed the error output which tells me where the .eslintrc file (that is looking for said package) lives. As you can see... I had some random .eslintrc living outside of my project which was somehow getting picked up. Failed to load parser 'babel-eslint' declared in '../.eslintrc': ... More on stackoverflow.com
🌐 stackoverflow.com
Newest 'babel-eslint' Questions - Stack Overflow
I am trying to use ESLint in WebStrom, ... error: ESLint: Parsing error: This experimental syntax requires enabling one of the following parser plugin(s): 'jsx, flow, ... ... I created a simple app a few weeks ago using create-react-app almost immediately I started getting this error in VSCode about it not being happy about something Babel related...which ... More on stackoverflow.com
🌐 stackoverflow.com
Link Babel ESLint Parser to Meteor's Babel settings
I’m updating ESLint in my project, and I’m using @babel/eslint-parser. This parser requires access to Babel’s configuration files. What I want to do is link the parser to the Babel settings that Meteor uses in the background to compile the code. However, I was unable to find anything ... More on forums.meteor.com
🌐 forums.meteor.com
1
0
November 29, 2024
🌐
ESLint
eslint.org › docs › latest › use › configure › parser
Configure a Parser - ESLint - Pluggable JavaScript Linter
The parser property must be an object that conforms to the parser interface. For example, you can use the @babel/eslint-parser package to allow ESLint to parse experimental syntax:
🌐
GitHub
github.com › babel › babel-eslint
GitHub - babel/babel-eslint: :tokyo_tower: A wrapper for Babel's parser used for ESLint (renamed to @babel/eslint-parser) · GitHub
August 18, 2021 - :tokyo_tower: A wrapper for Babel's parser used for ESLint (renamed to @babel/eslint-parser) - babel/babel-eslint
Starred by 3K users
Forked by 205 users
Languages   JavaScript 99.9% | Makefile 0.1%
Top answer
1 of 2
14

It's actually simpler than I thought...

So it turns out that since @babel/plugin-proposal-class-properties is a babel plugin, it needs to be declared in the plugins property of babel's configuration. According to the documentation of @babel/eslint-parser, those can be passed in with babelOptions property.

Therefore it's really as simple as this:

...
  "parserOptions": {
    ...
    "babelOptions": {
      "plugins": [
        "@babel/plugin-proposal-class-properties",
        ...
      ],
    },
  },
  "plugins": [
    "@babel",
  ],
...
2 of 2
3

When using @babel/eslint-parser as eslintrc parser, I met this question too.

For example, the eslintrc used by eslint node api in a global cli , and the cli provide a command A.

After go to the directory B, executing command A.The process.cwd() is B directory, but the @babel/xxx deps is in cli node_modules.The babel/core can not find plugins in B.

Parsing error: Cannot find module '@babel/plugin-proposal-decorators'\nRequire stack:
- /Users/a1/.nvm/versions/node/v14.16.1/lib/node_modules/test-a-cli/node_modules/@babel/core/lib/config/files/plugins.js
- /Users/a1/.nvm/versions/node/v14.16.1/lib/node_modules/test-a-cli/node_modules/@babel/core/lib/config/files/index.js
- /Users/a1/.nvm/versions/node/v14.16.1/lib/node_modules/test-a-cli/node_modules/@babel/core/lib/index.js
- /Users/a1/.nvm/versions/node/v14.16.1/lib/node_modules/test-a-cli/node_modules/@babel/eslint-parser/lib/worker/babel-core.cjs
- /Users/a1/.nvm/versions/node/v14.16.1/lib/node_modules/test-a-cli/node_modules/@babel/eslint-parser/lib/worker/handle-message.cjs
- /Users/a1/.nvm/versions/node/v14.16.1/lib/node_modules/test-a-cli/node_modules/@babel/eslint-parser/lib/client.cjs
- /Users/a1/.nvm/versions/node/v14.16.1/lib/node_modules/test-a-cli/node_modules/@babel/eslint-parser/lib/index.cjs
- /Users/a1/.nvm/versions/node/v14.16.1/lib/node_modules/test-a-cli/node_modules/@eslint/eslintrc/lib/config-array-factory.js
- /Users/a1/.nvm/versions/node/v14.16.1/lib/node_modules/test-a-cli/node_modules/@eslint/eslintrc/lib/index.js
- /Users/a1/.nvm/versions/node/v14.16.1/lib/node_modules/test-a-cli/node_modules/eslint/lib/cli-engine/cli-engine.js
- /Users/a1/.nvm/versions/node/v14.16.1/lib/node_modules/test-a-cli/node_modules/eslint/lib/cli-engine/index.js
- /Users/a1/.nvm/versions/node/v14.16.1/lib/node_modules/test-a-cli/node_modules/eslint/lib/api.js
- /Users/a1/.nvm/versions/node/v14.16.1/lib/node_modules/test-a-cli/node_modules/test-a-es-checker/dist/index.js
- /Users/a1/.nvm/versions/node/v14.16.1/lib/node_modules/test-a-cli/dist/index.js

I resolved it by provide cwd for babelOption in eslintrc.

module.exports = {
  ...
  parser: '@babel/eslint-parser',
  babelOptions: {
    cwd: __dirname, // The working directory that all paths in the programmatic options will be resolved relative to.
    presets: ['@babel/preset-env', '@babel/preset-react', '@babel/preset-typescript'],
    plugins: [
      ['@babel/plugin-proposal-decorators', { legacy: true }],
      ['@babel/plugin-proposal-class-properties', { loose: true }],
    ],
  },
  ...
};


🌐
Babel
babeljs.io › blog › 2020 › 07 › 13 › the-state-of-babel-eslint
The State of babel-eslint · Babel
July 13, 2020 - With the next iteration of babel-eslint, we have decided to publish the package under a new name: @babel/eslint-parser.
Find elsewhere
🌐
Tjaddison
tjaddison.com › blog › 2021 › 03 › updating-babel-eslint-to-babeleslint-parser-for-react-apps
Updating babel-eslint to @babel/eslint-parser for React apps | tjaddison.com
March 31, 2021 - And then update the parser (in your .eslintrc.* file): - parser: 'babel-eslint', + parser: '@babel/eslint-parser',
🌐
Bundlephobia
bundlephobia.com › package › @babel › eslint-parser
@babel/eslint-parser ❘ Bundlephobia
Find the size of javascript package @babel/eslint-parser. Bundlephobia helps you find the performance impact of npm packages.
🌐
CodeSandbox
codesandbox.io › examples › package › @babel › eslint-parser
@babel/eslint-parser examples - CodeSandbox
AboutESLint parser that allows for linting of experimental syntax transformed by Babel9,700,674Weekly Downloads
🌐
jsDelivr
jsdelivr.com › package › npm › @babel › eslint-parser
@babel/eslint-parser CDN by jsDelivr - A CDN for npm and GitHub
July 30, 2020 - A free, fast, and reliable CDN for @babel/eslint-parser. ESLint parser that allows for linting of experimental syntax transformed by Babel
Published   Jul 30, 2020
🌐
Stack Overflow
stackoverflow.com › questions › tagged › babel-eslint
Newest 'babel-eslint' Questions - Stack Overflow
Hi I am quite new to ESLint and when I was gaining some headway I encountered issues with the assert when [importing a JSON file. I added the babel ESLint parser but on setting everything up I noticed ...
🌐
Stephencharlesweiss
stephencharlesweiss.com › typescript-babel-eslint-together
getting typescript, babel, and eslint working together | /*code-comments*/
Now that we have a start for ESLint and Babel, let’s combine them. ... Finally, updating our .eslintrc.js which was set up automatically based on answers to the interactive prompt, we add a parser and plugin:
🌐
Robin Wieruch
robinwieruch.de › react-eslint-webpack-babel
How to use ESLint in React
June 15, 2019 - Afterward, you can introduce it in your .eslintrc configuration file for ESLint: { "parser": "@babel/eslint-parser", "extends": ["airbnb"] } That's it. After running your npm start script which uses Webpack, you should see all the ESLint violations, regarding React but also JavaScript, on your command line.
🌐
Socket
socket.dev › npm › package › @babel › eslint-parser
@babel/eslint-parser - npm Package Security Analysis - Socke...
ESLint parser that allows for linting of experimental syntax transformed by Babel. Version: 7.28.6 was published by hzoo. Start using Socket to analyz...
🌐
Hackingwithreact
hackingwithreact.com › read › 1 › 39 › linting-react-using-eslint-and-babel
Linting React using ESLint and Babel – a free Hacking with React tutorial
.eslintrc · { "parser": "babel-eslint", "env": { "browser": true, "node": true }, "rules": { "quotes": [2, "single"] } } Now save it with the exact name .eslintrc. If you're smart, you'll leave the file open in your editor because it's hidden. Save that file, then run npm run lint in your terminal window.
🌐
Meteor
forums.meteor.com › help
Link Babel ESLint Parser to Meteor's Babel settings - help - Meteor Forum
November 29, 2024 - I’m updating ESLint in my project, and I’m using @babel/eslint-parser. This parser requires access to Babel’s configuration files. What I want to do is link the parser to the Babel settings that Meteor uses in the backg…
🌐
Stackaid
stackaid.us › github › babel › babel-eslint
babel/babel-eslint - StackAid
:tokyo_tower: A wrapper for Babel's parser used for ESLint (renamed to @babel/eslint-parser)
🌐
Next.js
nextjs.org › docs › app › api-reference › config › eslint
Configuration: ESLint | Next.js
2 weeks ago - Use @next/eslint-plugin-next directly if you have any of the following already configured: Conflicting plugins installed separately or through another config (such as airbnb or react-app): ... Custom parserOptions different from Next.js defaults (only if you have customized your Babel configuration)