Differences from antfu/eslint-config

Explicit list of how @vinicunca/eslint-config diverges from its antfu/eslint-config upstream.

@vinicunca/eslint-config is a fork of antfu/eslint-config. Integrations, plugins and the composer API come from that project. This page lists the differences that matter when you switch or compare docs.

API and packaging

antfu/eslint-config@vinicunca/eslint-config
FactoryDefault export antfu()Named export vinicuncaESLint() — no default export
Config namesantfu/*vinicunca/*
CLI wizardpnpm dlx @antfu/eslint-config@latestNone — write eslint.config.js yourself
Angularangular: trueNo angular option
ESLint peerSee antfu's package.json^10.0.0

Code style

antfuvinicunca
SemicolonsOff (semi: false)On (semi: true)
QuotesSingleSingle
Indent2 spaces2 spaces
style/arrow-parensFrom Stylistic customize (as-needed)Always (x) => x
curlyDepends on lessOpinionatedAlways 'all'
antfu/top-level-functionOff when lessOpinionatedAlways on
stylistic.braceStyle default'stroustrup' and applied'stroustrup' in defaults, but style/brace-style is then set without options, so JS/TS use 1tbs (} else {). Vue templates still use vue/brace-style with 'stroustrup'.
lessOpinionatedRelaxes several opinionated rulesAccepted, does nothing — stylistic.ts never reads it

React and plugins

  • React needs @eslint-react/eslint-plugin and eslint-plugin-react-refresh only — not eslint-plugin-react-hooks.
  • Plugin rename map includes @eslint-react → react (write react/* in overrides).
  • Editor non-fixable rules: prefer-const, unused-imports/no-unused-imports, test/no-only-tests only.

Auto-detect and extras

  • pnpm workspace rules turn on when pnpm-workspace.yaml exists (antfu documents this as off / experimental by default).
  • UnoCSS attributify defaults to false (antfu's types often say true).
  • e18e is on by default (same family of rules as upstream, with array-copy rules and prefer-static-regex off unless you override them).
  • antislop is on by default. eslint-plugin-slop and eslint-plugin-sonarjs are regular dependencies, so there is nothing extra to install. Set antislop: false to turn it off.

What stayed the same

Flat config composition (options + extra configs + composer methods), .gitignore support, Stylistic instead of Prettier for JS/TS, Vue auto-detect, optional formatters, type-aware TypeScript via tsconfigPath, and the plugin set for JSON/YAML/TOML/Markdown/Vitest.