@robonen/eslint
Composable ESLint flat-config presets.
Install
pnpm install -D @robonen/eslint eslint jiti
jitilets ESLint load a TypeScripteslint.config.ts.
Usage
Create eslint.config.ts in your project root:
import { compose, base, typescript, vue, vitest, imports } from '@robonen/eslint';
export default compose(base, typescript, vue, vitest, imports);
Append custom config objects after presets to override them:
import { compose, base, typescript } from '@robonen/eslint';
export default compose(base, typescript, {
rules: { 'no-console': 'off' },
}, {
files: ['**/*.vue'],
rules: { '@stylistic/no-multiple-empty-lines': 'off' },
});
Presets
| Preset | Plugin(s) | Description |
|---|---|---|
base |
@eslint/js, eslint-plugin-unicorn |
Core eslint + unicorn rules, global ignores |
typescript |
typescript-eslint |
TypeScript rules (**/*.ts, **/*.vue) |
vue |
eslint-plugin-vue |
Vue 3 Composition API / <script setup> rules |
vitest |
@vitest/eslint-plugin |
Test file rules |
imports |
eslint-plugin-import-x |
Import rules (cycles, duplicates, ordering) |
node |
eslint-plugin-n |
Node.js-specific rules |
stylistic |
@stylistic/eslint-plugin |
Formatting rules |
ignores is also exported on its own if you only want the global ignore list.
Migrating from @robonen/oxlint
This package replaces @robonen/oxlint. The preset names and intent are
preserved, with these mapping notes:
eslint/*rules → ESLint core rules (no prefix), e.g.eslint/no-console→no-console.typescript/*→@typescript-eslint/*.import/*→import-x/*(viaeslint-plugin-import-x).node/*→n/*(viaeslint-plugin-n).@stylistic/*andunicorn/*are unchanged.oxc/*rules are oxc-exclusive and have no ESLint equivalent; they are dropped. Their intent is largely covered by@eslint/jsrecommended andunicorn.categories/env/ignorePatterns(oxlint config keys) are replaced by flat config equivalents:@eslint/jsrecommended,languageOptions.globals, and theignorespreset.
API
compose(...configs): FlatConfigArray
Flattens presets (arrays) and inline overrides (single objects) into one ordered
flat config array. Later entries override earlier ones — ESLint flat-config
semantics. Falsy entries (false/null/undefined) are skipped, enabling
conditional composition.