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 | |
|---|---|---|
| Factory | Default export antfu() | Named export vinicuncaESLint() — no default export |
| Config names | antfu/* | vinicunca/* |
| CLI wizard | pnpm dlx @antfu/eslint-config@latest | None — write eslint.config.js yourself |
| Angular | angular: true | No angular option |
| ESLint peer | See antfu's package.json | ^10.0.0 |
Code style
| antfu | vinicunca | |
|---|---|---|
| Semicolons | Off (semi: false) | On (semi: true) |
| Quotes | Single | Single |
| Indent | 2 spaces | 2 spaces |
style/arrow-parens | From Stylistic customize (as-needed) | Always (x) => x |
curly | Depends on lessOpinionated | Always 'all' |
antfu/top-level-function | Off when lessOpinionated | Always 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'. |
lessOpinionated | Relaxes several opinionated rules | Accepted, does nothing — stylistic.ts never reads it |
React and plugins
- React needs
@eslint-react/eslint-pluginandeslint-plugin-react-refreshonly — noteslint-plugin-react-hooks. - Plugin rename map includes
@eslint-react→react(writereact/*in overrides). - Editor non-fixable rules:
prefer-const,unused-imports/no-unused-imports,test/no-only-testsonly.
Auto-detect and extras
- pnpm workspace rules turn on when
pnpm-workspace.yamlexists (antfu documents this as off / experimental by default). - UnoCSS
attributifydefaults tofalse(antfu's types often saytrue). - e18e is on by default (same family of rules as upstream, with array-copy rules and
prefer-static-regexoff unless you override them). - antislop is on by default.
eslint-plugin-slopandeslint-plugin-sonarjsare regular dependencies, so there is nothing extra to install. Setantislop: falseto 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.