FAQ

Common issues with the named export, style defaults, optional plugins and editors.

vinicuncaESLint is not the default export

Use a named import. There is no default export and no factory module:

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

There is no CLI / setup wizard

Write eslint.config.js by hand. pnpm dlx @antfu/eslint-config installs antfu's package, not this one.

Cannot find package 'eslint-plugin-sonarjs'

You are on v5.7.1 or older. Those versions import eslint-plugin-sonarjs at load time but list it as an optional peer. Upgrade to v6, which ships eslint-plugin-slop and eslint-plugin-sonarjs as dependencies. See Upgrading from v5 to v6.

How do I turn off the anti-slop rules?

They are on by default since v6:

export default vinicuncaESLint({
  antislop: false,
});

Why didn't stylistic.braceStyle change else?

STYLISTIC_CONFIG_DEFAULTS.braceStyle is 'stroustrup', but vinicunca/stylistic/rules then sets 'style/brace-style': ['error'] with no options, which is ESLint Stylistic's default 1tbs. Vue templates still use vue/brace-style with your braceStyle value.

To get stroustrup in JS/TS:

export default vinicuncaESLint().override('vinicunca/stylistic/rules', {
  rules: {
    'style/brace-style': ['error', 'stroustrup', { allowSingleLine: true }],
  },
});

lessOpinionated does nothing

The option is forwarded into stylistic() but never read. curly, antfu/top-level-function and style/arrow-parens stay on. Turn them off with stylistic.overrides or .overrideRules().

pnpx eslint / pnpm dlx eslint ignores my plugins

Those commands download a different ESLint. Use the project binary:

pnpm eslint
pnpm exec eslint --fix

Can I keep Prettier?

Not on JavaScript or TypeScript. Disable the Prettier extension (prettier.enable: false) and let ESLint fix those files. Use formatters for CSS/HTML/XML/Markdown/GraphQL/Astro so Prettier runs inside ESLint as format/prettier.

How do I turn stylistic rules off?

export default vinicuncaESLint({
  stylistic: false,
});

You then need another formatter for JS/TS. Integrations that took indent / quotes from stylistic (JSON, YAML, Vue templates, Svelte, formatters) fall back to the built-in defaults.

Vue didn't turn on

The factory looks for vue, nuxt, vitepress or @slidev/cli in the project's packages. Set vue: true (or false) to override detection.

Type-aware rules are slow

typescript.tsconfigPath enables a large @typescript-eslint typed set. Narrow filesTypeAware, add ignoresTypeAware, or drop tsconfigPath if you don't need those rules.

Angular?

Not supported. There is no angular option.

files in the first argument throws

The first argument is global options. Put files on the second (or later) config object.

Command comments

eslint-plugin-command is always registered (vinicunca/command/rules). Remove it with .remove('vinicunca/command/rules') if you don't want comment-triggered transforms.