An ESLint plugin for linting ESLint plugins with 32 rules, preset configurations, and utility functions for rule development.
—
Pending
Does it follow best practices?
Impact
Pending
No eval scenarios have been run
Pending
The risk profile of this skill
Core plugin object containing metadata, rules, and preset configurations for various ESLint plugin development scenarios.
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'];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;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
];Includes all rules, including those requiring TypeScript type information.
const allTypeCheckedConfig: Linter.Config;Usage:
export default [
eslintPlugin.configs['all-type-checked']
];Includes only rules marked as recommended for general ESLint plugin development.
const recommendedConfig: Linter.Config;Usage:
export default [
eslintPlugin.configs.recommended
];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
}
];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
}
];Combination of recommended rules that apply to ESLint rule files.
const rulesRecommendedConfig: Linter.Config;Combination of recommended rules that apply to ESLint test files.
const testsRecommendedConfig: Linter.Config;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
}
];