Skip to main content
The ESLint Node.js API allows you to programmatically lint JavaScript code and integrate ESLint into your Node.js applications.

API Exports

ESLint exports the following modules from eslint:
const { ESLint, Linter, RuleTester, SourceCode, loadESLint } = require("eslint");

Primary Classes

ESLint

The ESLint class is the primary Node.js API for linting files and text. It provides methods for:
  • Linting files and directories
  • Linting text strings
  • Loading formatters
  • Calculating configurations
  • Getting rules metadata
Learn more about ESLint class →

Linter

The Linter class is a low-level API for verifying code with explicit configuration. It provides:
  • Direct code verification with config objects
  • Autofix capabilities
  • Access to source code and suppressed messages
Learn more about Linter class →

RuleTester

The RuleTester class is used for testing ESLint rules. It provides:
  • Test framework integration (Mocha, Jest)
  • Valid and invalid test cases
  • Automatic assertion of rule behavior
Learn more about RuleTester →

SourceCode

The SourceCode class represents parsed source code. It provides:
  • Access to AST, tokens, and comments
  • Scope analysis information
  • Methods for querying code structure
Learn more about SourceCode →

loadESLint

The loadESLint function is an async function that returns the ESLint constructor. It’s primarily useful for dynamic imports and compatibility scenarios.
const { loadESLint } = require("eslint");

async function main() {
  const ESLintClass = await loadESLint();
  const eslint = new ESLintClass();
}
In most cases, you can import ESLint directly. The loadESLint function is mainly for backward compatibility with older versions.

Configuration API

ESLint also exports configuration helpers from eslint/config:
const { defineConfig, globalIgnores } = require("eslint/config");

Basic Usage

const { ESLint } = require("eslint");

async function lintFiles() {
  const eslint = new ESLint({
    overrideConfigFile: "eslint.config.js"
  });

  const results = await eslint.lintFiles(["src/**/*.js"]);
  const formatter = await eslint.loadFormatter("stylish");
  console.log(formatter.format(results));
}

lintFiles();

Version Information

You can access the ESLint version from both classes:
console.log(ESLint.version);  // e.g., "9.0.0"
console.log(Linter.version);  // e.g., "9.0.0"