An ESLint plugin that enforces best practices and consistency when writing ESLint plugins and their tests.
eslint-plugin-eslint-plugin is a specialized ESLint plugin that lints the source code of other ESLint plugins. It helps developers write higher-quality, more consistent, and maintainable custom ESLint rules by enforcing best practices, catching common errors, and ensuring compatibility with ESLint's API. It supports rules written in CommonJS, ES Modules, and TypeScript.
Developers and teams who create and maintain custom ESLint plugins, especially those publishing plugins for public use or managing large internal rule sets.
It provides automated guardrails for ESLint plugin development, reducing manual review effort, preventing API misuse, and ensuring consistency across rule sets. Its comprehensive rule coverage and fixable errors make it a practical tool for improving plugin quality.
An ESLint plugin for linting ESLint plugins
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Rules like require-meta-docs-description and require-meta-schema ensure that ESLint plugins have standardized, well-documented metadata, which improves usability and reduces errors in rule configuration.
Rules such as no-deprecated-context-methods automatically detect and fix usage of outdated ESLint APIs, helping plugins stay compatible with newer ESLint versions without manual updates.
Many rules, like meta-property-ordering and no-useless-token-range, provide ESLint --fix support, allowing developers to quickly correct issues without manual intervention.
Test-specific rules enforce consistent naming, prevent duplicate tests, and validate output assertions, leading to more reliable and maintainable test files for ESLint plugins.
The semantic versioning policy warns that using presets like 'all' can introduce breaking changes in minor releases, making it unsafe for production builds without careful version pinning.
Rules marked with 💭 require TypeScript type information, adding setup overhead for projects not already using typed linting and potentially slowing down linting performance.
Its focus on linting ESLint plugins limits its audience; developers working on general application code or other types of linters will find no value, and community resources are sparse compared to broader tools.
To effectively lint different parts of a plugin (e.g., rules vs. tests), users must manually configure file targeting in ESLint configs, which can be error-prone and time-consuming.