Configure a Parser
You can use custom parsers to convert JavaScript code into an abstract syntax tree for ESLint to evaluate. You might want to add a custom parser if your code isn’t compatible with ESLint’s default parser, Espree.
Configure a Custom Parser
In many cases, you can use the default parser that ESLint ships with for parsing your JavaScript code. You can optionally override the default parser by using the parser
property. 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:
// eslint.config.js
import babelParser from "@babel/eslint-parser";
export default [
{
files: ["**/*.js", "**/*.mjs"],
languageOptions: {
parser: babelParser
}
}
];
This configuration ensures that the Babel parser, rather than the default Espree parser, is used to parse all files ending with .js
and .mjs
.
The following third-party parsers are known to be compatible with ESLint:
- Esprima
- @babel/eslint-parser - A wrapper around the Babel parser that makes it compatible with ESLint.
- @typescript-eslint/parser - A parser that converts TypeScript into an ESTree-compatible form so it can be used in ESLint.
Configure Parser Options
Parsers may accept options to alter the way they behave. The languageOptions.parserOptions
is used to pass options directly to parsers. These options are always parser-specific, so you’ll need to check the documentation of the parser you’re using for available options. Here’s an example of setting parser options for the Babel ESLint parser:
// eslint.config.js
import babelParser from "@babel/eslint-parser";
export default [
{
languageOptions: {
parser: babelParser,
parserOptions: {
requireConfigFile: false,
babelOptions: {
babelrc: false,
configFile: false,
presets: ["@babel/preset-env"]
}
}
}
}
];