An ESLint plugin that filters lint output to only show errors on changed lines, keeping feedback focused.
eslint-plugin-diff is an ESLint plugin that filters linting results to only show errors and warnings on lines that have been changed in the current Git diff. It solves the problem of noisy lint output by focusing developer attention on issues introduced by recent changes, making it easier to maintain code quality during active development.
JavaScript and TypeScript developers working in teams who use ESLint for code quality and want to reduce linting noise, especially during CI/CD pipelines or pre-commit hooks.
Developers choose eslint-plugin-diff because it provides focused, actionable lint feedback tied directly to code changes, enabling safer lint rule upgrades and improving developer workflow by eliminating distractions from legacy violations.
Run ESLint on your changes only
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Limits ESLint output to only changed lines, reducing noise from legacy violations, as highlighted in the 'Focused Feedback' feature, making developer feedback actionable.
Allows teams to upgrade ESLint or add new rules without being blocked by existing issues in untouched files, enabling progressive adoption and reducing migration friction.
Supports diff, ci, and staged modes for local development, CI/CD, and pre-commit hooks, adapting to different environments with preset configs.
Automatically detects CI environments and adjusts diff base for pull requests, simplifying pipeline configuration without manual intervention.
Can be composed with other ESLint processors, like for Vue files, without conflicts, as shown in recipes, maintaining compatibility with existing setups.
By design, it misses lint violations outside changed lines due to its signal-over-completeness strategy, potentially allowing issues to persist in untouched code areas.
Relies entirely on Git for diff computation, making it unsuitable for non-Git projects, and composing processors requires manual configuration, which can be error-prone.
In staged mode, it emits fatal errors for files with unstaged changes, forcing developers to stage or discard changes, which can interrupt workflow and add friction.
By default, it only applies fixes to changed lines; enabling fixes outside diff hunks requires an extra environment variable, adding complexity for automated fixing.