or run

npx @tessl/cli init
Log in

Version

Tile

Overview

Evals

Files

docs

cli-tool.mdconstants-patterns.mdcore-configuration.mdfile-format-support.mdindex.mdlanguage-framework-support.mdstyling-formatting.mdutility-functions.md
tile.json

core-configuration.mddocs/

Core Configuration

The main factory function and core configuration options for creating comprehensive ESLint configurations.

Capabilities

Main Factory Function

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',
  },
});

Configuration Options Interface

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 Plugin Renaming

Default mapping for renaming ESLint plugins to shorter names.

const defaultPluginRenaming: Record<string, string>;

Default mappings include:

  • @eslint-reactreact
  • @typescript-eslintts
  • @stylisticstyle
  • import-liteimport
  • nnode
  • vitesttest
  • ymlyaml

Helper Functions

Configuration 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>;

Base Configuration Functions

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[]>;