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
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
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
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.