Installation
Choose a dependency model
Section titled “Choose a dependency model”| Package | Best for | What it installs |
|---|---|---|
@santi020k/eslint-config-basic | Recommended default | Core composer and TypeScript support |
@santi020k/eslint-config-full | Fastest batteries-included adoption | Every framework and integration config |
| Individual framework packages | Lean framework projects | Only that framework’s plugin set |
Lean install
Section titled “Lean install”pnpm add -D eslint @santi020k/eslint-config-basicnpm install -D eslint @santi020k/eslint-config-basicyarn add -D eslint @santi020k/eslint-config-basicbun add -d eslint @santi020k/eslint-config-basicPlain JavaScript and TypeScript projects need no other config package.
Add only the framework packages your project uses:
npm install -D @santi020k/eslint-config-reactnpm install -D @santi020k/eslint-config-next @santi020k/eslint-config-reactMeta-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:
npm install -D @santi020k/eslint-config-extensionsnpm install -D @santi020k/eslint-config-formatsnpm install -D @santi020k/eslint-config-librariesnpm install -D @santi020k/eslint-config-testingnpm install -D @santi020k/eslint-config-toolsInstall only the categories selected by the project.
Then create the smallest supported config:
import { defineConfig } from '@santi020k/eslint-config-basic'
export default defineConfig()Full install
Section titled “Full install”pnpm add -D eslint @santi020k/eslint-config-fullnpm install -D eslint @santi020k/eslint-config-fullyarn add -D eslint @santi020k/eslint-config-fullbun add -d eslint @santi020k/eslint-config-fullexport { 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.
Explicit configuration
Section titled “Explicit configuration”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'})Dependency policy
Section titled “Dependency policy”eslintis 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, andlite. - The full package is audited separately because its intentionally broad tree includes upstream plugins that may have temporary advisories.
Missing optional packages
Section titled “Missing optional packages”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.
Compatibility
Section titled “Compatibility”| Runtime | Supported version |
|---|---|
| Node.js | >=22.19.0 |
| ESLint | ^10.0.0 |
| TypeScript | >=5.0.0 when enabled |
Package versions
Section titled “Package versions”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.