π§ Prior art
Why yet another Eslint config?β
Through the years I came across a few ESLint configurations (have a look here or here).
None of these projects share the same goals of Sheriff. Sheriff has a particular vision. The main reasons that led to it's creation are:
- easy to setup and use (thank to
create-sheriff-config
) - easy to customize (thanks to the
FlatConfig
format) - sensible defaults, based on years of real world experience in production scenarios
After exploring every possible alternative, i came to the conclusion that none of the other options where close to what i needed for my projects and everyday use. Thatβs why i still opted for making Sheriff.
Related projectsβ
- eslint-config-airbnb-typescript
- xo
- eslint-kit
- eslint-config-galex
- eslint-config-hardcore
- eslint-config-everywhere
- eslint-plugin-canonical
- eslint-prettier-typescript-config
Comparisonsβ
The main technical difference between Sheriff and the other projects is that Sheriff is updated to the most recent version of ESLint and supports the new FlatConfig
instead of relying on weird hacks using the @rushstack/eslint-patch. Because of the technical limitation imposed by this hack, these configs are harder to work with, at multiple levels.
Another key difference is that the design of most of these configs seems to revolve around the idea of stuffing as much rules as possible into the config, regardless of the quality of the experience and the goal of the project.
Sheriff instead was shaped around solid principles and only includes the rules that let it achieve its goals.
There are of course other differences as well, but you can get an idea for yourself by reading their READMEs.