eslint-plugin-diff
Run ESLint on your changed lines only. Now with CI support!
What problem does it solve?
Introducing new ESLint rules (or updating 3rd party configs) in a large codebase can be tedious. This plugin allows your team to ease into new rules by only linting all new/modified code, eventually migrating to the new/updated rules.
It can be used in CI environments as well.
Installation
$ yarn add -D eslint-plugin-diff
Usage
If you want to define which commit or commit-range to diff between (useful in CI), you can set the environment variable ESLINT_PLUGIN_DIFF_COMMIT
(otherwise the plugin will default to HEAD
):
$ ESLINT_PLUGIN_DIFF_COMMIT="a8fdc20..5a9f19c" yarn run eslint .
$ ESLINT_PLUGIN_DIFF_COMMIT="${GITHUB_SHA}.." yarn run eslint .
See git's official documentation on the syntax
It's recommended to use "plugin:diff/diff"
(see config).
Config diff
— Diff all changes since HEAD (staged and unstaged)
Extend your config in .eslintrc
:
{
"extends": ["plugin:diff/diff"]
}
Equivalent to git diff HEAD
Config staged
— Diff staged changes only
Useful for pre-commit hooks, e.g. when running ESLint with lint-staged
Extend your config in .eslintrc
:
{
"extends": ["plugin:diff/staged"]
}
Equivalent to git diff HEAD --staged