Options

Reference of every option accepted by the first argument of vinicuncaESLint, with types and defaults.

All options go in the first argument of vinicuncaESLint(). Options typed boolean | object turn the integration on when you pass an object.

eslint.config.js
import { vinicuncaESLint } from '@vinicunca/eslint-config';

export default vinicuncaESLint({
  type: 'lib',
  stylistic: { indent: 2, quotes: 'single' },
  typescript: { tsconfigPath: 'tsconfig.json' },
});

General

type
'app' | 'lib'
Defaults to 'app'. 'lib' also enables ts/explicit-function-return-type (expressions, higher-order functions and IIFEs are allowed) for published libraries.
ignores
string[] | ((originals: string[]) => string[])
Defaults to []. Global ignore globs. An array extends the built-in list (node_modules, dist, lockfiles, coverage, .nuxt, .next, .output, CHANGELOG*.md, *.min.*, __snapshots__, .claude, .agents and more). A function receives the built-in list and returns the final one. When TypeScript support is off, *.ts and *.tsx files are ignored too.
gitignore
boolean | FlatGitignoreOptions
Defaults to true. Adds the patterns from .gitignore to the ignores, without failing when the file is missing. Pass an object to configure eslint-config-flat-gitignore (for example files or strict).
isInEditor
boolean
Defaults to auto-detection (VS Code, JetBrains IDEs, Vim, Neovim, Zed; never in CI, git hooks or lint-staged). When true, prefer-const, unused-imports/no-unused-imports and test/no-only-tests become non-fixable warnings. See Editor-specific behavior.
autoRenamePlugins
boolean
Defaults to true. Renames plugin prefixes (for example @typescript-eslint to ts) in every config, including yours. See Plugin renaming.
componentExts
string[]
Defaults to []. Extra file extensions treated as components: they are parsed by the TypeScript parser and linted inside Markdown code blocks. vue is added automatically when Vue support is on.
lessOpinionated
boolean
Defaults to false. Accepted for compatibility with antfu/eslint-config but currently has no effect: curly, antfu/top-level-function and the other stylistic rules stay on.

The first argument also accepts the flat config properties name, languageOptions, linterOptions, processor, plugins, rules and settings (but not files). See Options.

JavaScript and core rules

javascript
{ overrides?: Rules }
Core JavaScript rules. Always enabled; use overrides to change them.
node
boolean
Defaults to true. Node.js rules from eslint-plugin-n (renamed node/*).
jsdoc
boolean
Defaults to true. JSDoc rules (as warnings) from eslint-plugin-jsdoc.
imports
boolean | { overrides?: Rules }
Defaults to true. Import hygiene rules from eslint-plugin-import-lite (renamed import/*) and eslint-plugin-antfu.
perfectionist
boolean | { overrides?: Rules }
Defaults to true. Sorts imports, exports, named imports and named exports with eslint-plugin-perfectionist.
unicorn
boolean | { allRecommended?: boolean }
Defaults to true. A curated set of eslint-plugin-unicorn rules. allRecommended: true (default false) uses the plugin's full recommended set instead. The overrides key is accepted by the type but currently ignored; override unicorn rules in an extra config.
e18e
boolean | OptionsE18e
Defaults to true. Ecosystem performance rules from @e18e/eslint-plugin. See e18e options.
regexp
boolean | { level?: 'error' | 'warn', overrides?: Rules }
Defaults to true. The recommended rules of eslint-plugin-regexp. level: 'warn' downgrades every error to a warning.
test
boolean | { overrides?: Rules }
Defaults to true. Rules for *.test.*, *.spec.*, *.bench.*, *.benchmark.* and __tests__/** files, from @vitest/eslint-plugin and eslint-plugin-no-only-tests (both under test/*).

e18e

modernization
boolean
Defaults to true. Rules that prefer modern built-in APIs.
moduleReplacements
boolean
Defaults to false in practice. The type docs say type === 'lib' && isInEditor, but the factory doesn't forward type to this integration, so set it explicitly to enable it.
performanceImprovements
boolean
Defaults to true. Rules that flag slow patterns.
overrides
Rules
Rule overrides for e18e/*. e18e/prefer-static-regex and the array-copy rules (prefer-array-at, prefer-array-from-map, prefer-array-to-reversed, prefer-array-to-sorted, prefer-array-to-spliced, prefer-spread-syntax) are off by default.

Stylistic

stylistic
boolean | StylisticOptions
Defaults to true. Formatting rules from ESLint Stylistic (renamed style/*). Pass false if you format with another tool, or an object with the keys below.

Stylistic options

indent
number | 'tab'
Defaults to 2. Also used for JSON, YAML, TOML, Vue templates, Svelte and the Prettier/dprint formatters.
quotes
'single' | 'double' | 'backtick'
Defaults to 'single'.
semi
boolean
Defaults to true. Set false to forbid semicolons.
jsx
boolean
Defaults to the value of the jsx option. Enables JSX stylistic rules.
braceStyle
'1tbs' | 'stroustrup' | 'allman'
Defaults to 'stroustrup', but JavaScript and TypeScript always use 1tbs (} else {) because the config sets style/brace-style without options. The value only reaches vue/brace-style in Vue templates. To change the brace style, override style/brace-style.
experimental
boolean
Defaults to false. Enables ESLint Stylistic's experimental rules and drops antfu/consistent-list-newline.
overrides
Rules
Rule overrides merged into vinicunca/stylistic/rules.

TypeScript

typescript
boolean | OptionsTypescript
Defaults to true when typescript or @typescript/native-preview is installed. Pass an object with the keys below to configure it. See TypeScript.

TypeScript options

tsconfigPath
string
Path to your tsconfig.json. Setting it enables type-aware rules.
overrides
Rules
Overrides for vinicunca/typescript/rules.
overridesTypeAware
Rules
Overrides for vinicunca/typescript/rules-type-aware. Only used when tsconfigPath is set.
filesTypeAware
string[]
Defaults to ['**/*.?([cm])ts', '**/*.?([cm])tsx']. Files that get type-aware parsing and rules.
ignoresTypeAware
string[]
Defaults to ['**/*.md/**', '**/*.astro/*.ts']. Files excluded from type-aware parsing and rules.
parserOptions
Partial<ParserOptions>
Extra options for @typescript-eslint/parser, merged last.
erasableOnly
boolean
Defaults to false. Forbids TypeScript syntax that can't be erased (enums, namespaces, parameter properties, import/export aliases), for Node.js type stripping.

Languages

jsx
boolean | { a11y?: boolean | { overrides?: Rules } }
Defaults to true. Enables JSX parsing for *.jsx/*.tsx and JSX stylistic rules. a11y (default false) adds the recommended rules of eslint-plugin-jsx-a11y, which you must install.
jsonc
boolean | { overrides?: Rules }
Defaults to true. Lints *.json, *.json5 and *.jsonc, and sorts the keys of package.json, tsconfig.json, tsconfig.*.json and jsconfig.json.
yaml
boolean | { overrides?: Rules }
Defaults to true. Lints *.yaml and *.yml with eslint-plugin-yml (renamed yaml/*).
toml
boolean | { overrides?: Rules }
Defaults to true. Lints *.toml with eslint-plugin-toml.
markdown
boolean | OptionsMarkdown
Defaults to true. Lints Markdown files with @eslint/markdown and the code blocks inside them. See Markdown options.

Markdown options

gfm
boolean
Defaults to true. Parses Markdown as GitHub Flavored Markdown. false uses CommonMark.
overrides
Rules
Overrides for the code blocks inside Markdown files (vinicunca/markdown/disables).
overridesMarkdown
Rules
Overrides for the Markdown document itself (vinicunca/markdown/rules).

Frameworks

vue
boolean | OptionsVue
Defaults to true when vue, nuxt, vitepress or @slidev/cli is installed. See Vue options.
react
boolean | { overrides?: Rules }
Defaults to false. Requires @eslint-react/eslint-plugin and eslint-plugin-react-refresh.
nextjs
boolean | { overrides?: Rules }
Defaults to false. Requires @next/eslint-plugin-next.
svelte
boolean | { overrides?: Rules }
Defaults to false. Requires eslint-plugin-svelte and svelte-eslint-parser.
solid
boolean | { overrides?: Rules }
Defaults to false. Requires eslint-plugin-solid.
astro
boolean | { overrides?: Rules }
Defaults to false. Requires eslint-plugin-astro and astro-eslint-parser.
unocss
boolean | OptionsUnoCSS
Defaults to false. @unocss/eslint-plugin ships with the config. See UnoCSS options.

See Frameworks for examples.

Vue options

a11y
boolean
Defaults to false. Adds accessibility rules from eslint-plugin-vuejs-accessibility (renamed vue-a11y/*), which you must install.
sfcBlocks
boolean | VueBlocksOptions
Defaults to true. Creates virtual files for SFC blocks with eslint-processor-vue-blocks so <style> blocks can be linted and formatted. false uses only the Vue processor.
vueVersion
2 | 3
Defaults to 3. Currently has no effect: the Vue 3 rule sets are always used.
overrides
Rules
Overrides for vinicunca/vue/rules.

UnoCSS options

attributify
boolean
Defaults to false (the type docs say true, but the config uses false). Enables unocss/order-attributify.
strict
boolean
Defaults to false. Reports blocklisted classes with unocss/blocklist.
configPath
string
Path to uno.config.ts, useful in monorepos.

The overrides key is accepted for unocss but currently ignored; override unocss/* rules in an extra config.

Optional configs

formatters
boolean | OptionsFormatters
Defaults to false. Formats CSS, HTML, XML, SVG, Markdown, GraphQL and Astro files with Prettier or dprint. See Formatters.
antislop
boolean | OptionsAntislop
Defaults to true. Experimental. Rules against low-value code patterns from eslint-plugin-slop and eslint-plugin-sonarjs, both installed with this config. Set false to turn them off. See Antislop options.
pnpm
boolean | OptionsPnpm
Defaults to true when a pnpm-workspace.yaml is found in the current directory or a parent. Experimental. See pnpm options.

Formatters options

css
boolean | 'prettier'
Formats *.css, *.pcss, *.postcss, *.scss and *.less (and Vue <style> blocks) with Prettier.
html
boolean | 'prettier'
Formats *.html and *.htm with Prettier.
xml
boolean | 'prettier'
Formats *.xml with Prettier. Requires @prettier/plugin-xml.
svg
boolean | 'prettier'
Formats *.svg with Prettier. Requires @prettier/plugin-xml.
markdown
boolean | 'prettier' | 'dprint'
Formats *.md. true means Prettier.
graphql
boolean | 'prettier'
Formats *.graphql and *.gql with Prettier.
astro
boolean | 'prettier'
Formats *.astro with Prettier. Requires prettier-plugin-astro.
slidev
boolean | { files?: string[] }
Formats Slidev decks (**/slides.md by default) with prettier-plugin-slidev. Only works when markdown uses Prettier.
prettierOptions
PrettierOptions
Prettier options merged over the defaults derived from your stylistic options.
dprintOptions
object
dprint options for Markdown, merged over the defaults. Currently typed as boolean, so TypeScript users need a cast.

Antislop options

slop
boolean | { cwd?: string, inspection?: 'full' | 'uncommitted' | 'recent-changes' | object }
Defaults to true. Enables eslint-plugin-slop rules. An object is forwarded to the plugin as settings.slop.
sonarjs
boolean
Defaults to true. Enables a curated subset of eslint-plugin-sonarjs rules.
cognitiveComplexity
number | false
Defaults to 15. Threshold for sonarjs/cognitive-complexity; false turns the rule off.
overrides
Rules
Overrides for vinicunca/antislop/rules/javascript.

pnpm options

catalogs
boolean
Defaults to true when pnpm-workspace.yaml mentions catalog: or catalogs:. Enforces catalog usage in package.json with pnpm/json-enforce-catalog.
json
boolean
Defaults to true unless jsonc is false. Lints package.json files.
yaml
boolean
Defaults to true unless yaml is false. Lints pnpm-workspace.yaml.
sort
boolean
Defaults to true (the type docs say false). Sorts the keys of pnpm-workspace.yaml.

See Optional configs for what each one checks.