or run

npx @tessl/cli init
Log in

Version

Tile

Overview

Evals

Files

docs

index.mdplugin-configuration.mdrule-linting.mdtest-linting.mdutility-functions.md
tile.json

plugin-configuration.mddocs/

Plugin Configuration

Core plugin object containing metadata, rules, and preset configurations for various ESLint plugin development scenarios.

Capabilities

Main Plugin Export

The default export provides the complete ESLint plugin object with all rules and configurations.

/**
 * Main ESLint plugin export with metadata, rules, and preset configurations
 */
declare const plugin: ESLintPlugin;
export default plugin;

interface ESLintPlugin {
  meta: {
    name: string;    // "eslint-plugin-eslint-plugin"
    version: string; // Plugin version from package.json
  };
  rules: Record<string, Rule.RuleModule>;
  configs: {
    all: Linter.Config;
    'all-type-checked': Linter.Config;
    recommended: Linter.Config;
    rules: Linter.Config;
    tests: Linter.Config;
    'rules-recommended': Linter.Config;
    'tests-recommended': Linter.Config;
  };
}

Usage Examples:

import eslintPlugin from 'eslint-plugin-eslint-plugin';

// Access plugin metadata
console.log(eslintPlugin.meta.name);    // "eslint-plugin-eslint-plugin"
console.log(eslintPlugin.meta.version); // "7.0.0"

// Use preset configurations
export default [
  eslintPlugin.configs.recommended,
  eslintPlugin.configs.rules
];

// Access individual rules
const metaTypeRule = eslintPlugin.rules['require-meta-type'];

Configuration Presets

Seven preset configurations targeting different aspects of ESLint plugin development.

interface Linter.Config {
  name: string;
  plugins: Record<string, ESLint.Plugin>;
  rules: Record<string, RuleLevel>;
}

type RuleLevel = 'error' | 'warn' | 'off' | 0 | 1 | 2;

All Configuration

Includes all rules except those requiring type checking.

const allConfig: Linter.Config;

Usage:

import eslintPlugin from 'eslint-plugin-eslint-plugin';

export default [
  eslintPlugin.configs.all
];

All Type-Checked Configuration

Includes all rules, including those requiring TypeScript type information.

const allTypeCheckedConfig: Linter.Config;

Usage:

export default [
  eslintPlugin.configs['all-type-checked']
];

Recommended Configuration

Includes only rules marked as recommended for general ESLint plugin development.

const recommendedConfig: Linter.Config;

Usage:

export default [
  eslintPlugin.configs.recommended
];

Rules Configuration

Includes rules specifically for linting ESLint rule files (meta.docs.category === 'Rules').

const rulesConfig: Linter.Config;

Usage:

export default [
  {
    files: ['lib/rules/*.js'],
    ...eslintPlugin.configs.rules
  }
];

Tests Configuration

Includes rules specifically for linting ESLint test files (meta.docs.category === 'Tests').

const testsConfig: Linter.Config;

Usage:

export default [
  {
    files: ['tests/**/*.js'],
    ...eslintPlugin.configs.tests
  }
];

Rules Recommended Configuration

Combination of recommended rules that apply to ESLint rule files.

const rulesRecommendedConfig: Linter.Config;

Tests Recommended Configuration

Combination of recommended rules that apply to ESLint test files.

const testsRecommendedConfig: Linter.Config;

Configuration Implementation

Internal configuration creation logic (for understanding the structure).

/**
 * Creates a configuration object for a specific rule set
 * @param configName - Name of the configuration preset
 * @returns Linter configuration object
 */
declare function createConfig(configName: ConfigName): Linter.Config;

type ConfigName = 
  | 'all' 
  | 'all-type-checked' 
  | 'recommended' 
  | 'rules' 
  | 'tests' 
  | 'rules-recommended' 
  | 'tests-recommended';

/**
 * Filter functions that determine which rules belong to each configuration
 */
declare const configFilters: Record<ConfigName, (rule: Rule.RuleModule) => boolean>;

Advanced Usage:

// Selective rule configuration
export default [
  {
    plugins: {
      'eslint-plugin': eslintPlugin
    },
    rules: {
      // Enable specific rules manually
      'eslint-plugin/require-meta-type': 'error',
      'eslint-plugin/require-meta-docs-url': 'error',
      'eslint-plugin/no-deprecated-context-methods': 'warn',
      
      // Disable problematic rules
      'eslint-plugin/consistent-output': 'off'
    }
  }
];

// Target specific file patterns
export default [
  // Rules for ESLint rule files
  {
    files: ['lib/rules/*.js', 'src/rules/*.ts'],
    ...eslintPlugin.configs.rules
  },
  
  // Rules for test files
  {
    files: ['tests/**/*.js', '**/*.test.js'],
    ...eslintPlugin.configs.tests
  }
];