The main factory function and core configuration options for creating comprehensive ESLint configurations.
Creates and composes ESLint flat config with intelligent defaults and extensive customization options.
/**
* Construct an array of ESLint flat config items.
* @param options - The options for generating the ESLint configurations
* @param userConfigs - The user configurations to be merged with the generated configurations
* @returns The merged ESLint configurations as FlatConfigComposer
*/
function antfu(
options?: OptionsConfig & Omit<TypedFlatConfigItem, 'files'>,
...userConfigs: Awaitable<TypedFlatConfigItem | TypedFlatConfigItem[] | FlatConfigComposer<any, any> | Linter.Config[]>[]
): FlatConfigComposer<TypedFlatConfigItem, ConfigNames>;Usage Examples:
import antfu from "@antfu/eslint-config";
// Basic usage with defaults
export default antfu();
// With specific framework support
export default antfu({
vue: true,
react: false,
typescript: true,
});
// With advanced configuration
export default antfu({
type: 'lib',
lessOpinionated: true,
stylistic: {
indent: 2,
quotes: 'single',
semi: false,
},
typescript: {
tsconfigPath: './tsconfig.json',
filesTypeAware: ['**/*.{ts,tsx}'],
},
ignores: ['**/fixtures', '**/temp'],
},
// Additional user configs
{
rules: {
'no-console': 'warn',
},
});Main configuration interface extending multiple option interfaces.
interface OptionsConfig extends OptionsComponentExts, OptionsProjectType {
/** Enable gitignore support */
gitignore?: boolean | FlatGitignoreOptions;
/** Disable some opinionated rules */
lessOpinionated?: boolean;
/** Core rules - can't be disabled */
javascript?: OptionsOverrides;
/** Enable TypeScript support */
typescript?: boolean | OptionsTypescript;
/** Enable JSX related rules */
jsx?: boolean | OptionsJSX;
/** Options for eslint-plugin-unicorn */
unicorn?: boolean | OptionsUnicorn;
/** Options for eslint-plugin-import-lite */
imports?: boolean | OptionsOverrides;
/** Enable test support */
test?: boolean | OptionsOverrides;
/** Enable Vue support */
vue?: boolean | OptionsVue;
/** Enable JSONC support */
jsonc?: boolean | OptionsOverrides;
/** Enable YAML support */
yaml?: boolean | OptionsOverrides;
/** Enable TOML support */
toml?: boolean | OptionsOverrides;
/** Enable ASTRO support */
astro?: boolean | OptionsOverrides;
/** Enable linting for code snippets in Markdown */
markdown?: boolean | OptionsOverrides;
/** Enable stylistic rules */
stylistic?: boolean | (StylisticConfig & OptionsOverrides);
/** Enable regexp rules */
regexp?: boolean | (OptionsRegExp & OptionsOverrides);
/** Enable react rules */
react?: boolean | OptionsOverrides;
/** Enable nextjs rules */
nextjs?: boolean | OptionsOverrides;
/** Enable solid rules */
solid?: boolean | OptionsOverrides;
/** Enable svelte rules */
svelte?: boolean | OptionsOverrides;
/** Enable unocss rules */
unocss?: boolean | OptionsUnoCSS;
/** Enable pnpm workspace support */
pnpm?: boolean;
/** Use external formatters to format files */
formatters?: boolean | OptionsFormatters;
/** Control to disable some rules in editors */
isInEditor?: boolean;
/** Automatically rename plugins in the config */
autoRenamePlugins?: boolean;
}Default mapping for renaming ESLint plugins to shorter names.
const defaultPluginRenaming: Record<string, string>;Default mappings include:
@eslint-react → react@typescript-eslint → ts@stylistic → styleimport-lite → importn → nodevitest → testyml → yamlConfiguration resolution and override utilities.
/**
* Resolve sub-configuration options
* @param options - Main configuration options
* @param key - Configuration section key
* @returns Resolved sub-options
*/
function resolveSubOptions<K extends keyof OptionsConfig>(
options: OptionsConfig,
key: K,
): ResolvedOptions<OptionsConfig[K]>;
/**
* Get rule overrides for specific integration
* @param options - Main configuration options
* @param key - Configuration section key
* @returns Partial rules record with overrides
*/
function getOverrides<K extends keyof OptionsConfig>(
options: OptionsConfig,
key: K,
): Partial<Linter.RulesRecord & RuleOptions>;
type ResolvedOptions<T> = T extends boolean ? never : NonNullable<T>;Core configuration functions that are always included.
/**
* File ignore patterns configuration
* @param ignores - Array of glob patterns to ignore
* @returns ESLint config for ignoring files
*/
function ignores(ignores?: string[]): Promise<TypedFlatConfigItem[]>;
/**
* ESLint directive comments handling
* @returns ESLint config for comment rules
*/
function comments(): Promise<TypedFlatConfigItem[]>;
/**
* Node.js environment configuration
* @returns ESLint config for Node.js environment
*/
function node(): Promise<TypedFlatConfigItem[]>;
/**
* Code organization and sorting rules
* @returns ESLint config for perfectionist plugin
*/
function perfectionist(): Promise<TypedFlatConfigItem[]>;
/**
* Inline ESLint command support
* @returns ESLint config for command plugin
*/
function command(): Promise<TypedFlatConfigItem[]>;
/**
* Rule disabling in specific contexts
* @returns ESLint config for disabling problematic rules
*/
function disables(): Promise<TypedFlatConfigItem[]>;