Skip to content

Installation

PackageBest forWhat it installs
@santi020k/eslint-config-basicRecommended defaultCore composer and TypeScript support
@santi020k/eslint-config-fullFastest batteries-included adoptionEvery framework and integration config
Individual framework packagesLean framework projectsOnly that framework’s plugin set
bash
pnpm add -D eslint @santi020k/eslint-config-basic

Plain JavaScript and TypeScript projects need no other config package.

Add only the framework packages your project uses:

Terminal window
npm install -D @santi020k/eslint-config-react
npm install -D @santi020k/eslint-config-next @santi020k/eslint-config-react

Meta-frameworks also need the config they imply: Next.js, Expo, React Router, and Remix need React; Nuxt and Slidev need Vue; TanStack Start needs React or Solid. Each framework guide has the exact install command.

Add the relevant category packages when enabling testing, formats, libraries, tools, or extension features:

Terminal window
npm install -D @santi020k/eslint-config-extensions
npm install -D @santi020k/eslint-config-formats
npm install -D @santi020k/eslint-config-libraries
npm install -D @santi020k/eslint-config-testing
npm install -D @santi020k/eslint-config-tools

Install only the categories selected by the project.

Then create the smallest supported config:

eslint.config.mjs
import { defineConfig } from '@santi020k/eslint-config-basic'
export default defineConfig()
bash
pnpm add -D eslint @santi020k/eslint-config-full
eslint.config.mjs
export { default } from '@santi020k/eslint-config-full/recommended'

The full bundle is intentionally larger. It exists for teams that value one dependency and a single tested graph over install size and audit surface.

Pass options only when a detected choice needs to be changed:

import { defineConfig } from '@santi020k/eslint-config-basic'
export default await defineConfig({
frameworks: { react: true },
ignores: ['generated/**'],
strict: 'ci',
typescript: 'strict'
})
  • eslint is a peer dependency so the application owns the lint runtime.
  • The lean package owns only its core and TypeScript implementation.
  • Framework and integration config packages are optional peers.
  • ESLint plugins are owned by the narrowest config package that uses them.
  • Host runtimes such as React, Next.js, GraphQL, Storybook, Tailwind, and Zod remain optional peers where possible.
  • Release checks enforce direct-dependency budgets and a zero-known-high security boundary for core, basic, and lite.
  • The full package is audited separately because its intentionally broad tree includes upstream plugins that may have temporary advisories.

When detection enables an uninstalled framework, the error names its package:

Unable to load optional framework config "react".
Install "@santi020k/eslint-config-react" or disable that framework.

Run basic-eslint explain to see why a feature was detected and basic-eslint doctor to check project setup and required package presence.

RuntimeSupported version
Node.js>=22.19.0
ESLint^10.0.0
TypeScript>=5.0.0 when enabled

Packages in the @santi020k/eslint-config-* family share a compatibility major but release minor and patch versions independently. Packages on the same major are designed to work together, so a setup can safely combine versions such as [email protected] and [email protected].

Use the latest version of each package within the chosen major. Internal dependencies and peerDependencies declare compatible package ranges. Package managers install matching versions and report unmet peers during installation. Re-run your package manager’s install command to validate the dependency tree; basic-eslint doctor reports incompatible installed ranges, and npm users can also run npm ls to inspect the installed tree.

For existing projects, continue with Migrate from v2.

Did this page help?

Your answer stays in this browser. Share details on GitHub to help improve the docs.