Package Exports
- @eslint-react/eslint-plugin
- @eslint-react/eslint-plugin/package.json
Readme
ESLint x React
More than 50 ESLint rules to catch common mistakes and improve your React code. Built (mostly) from scratch.
Supported engines
Node.js
- 18.x LTS Hydrogen
- 20.x Current
Bun
- 1.0.15 or later
Install
# npm
npm install --save-dev @eslint-react/eslint-plugin
Setup
Add @eslint-react
to the plugins section of your .eslintrc.js
configuration file.
module.exports = {
// ...
parser: "@typescript-eslint/parser",
extends: ["plugin:@eslint-react/recommended-legacy"],
plugins: ["@eslint-react"],
// ...
};
Linting with type information
Rules that require type information are not enabled by default. To enable them, you need to set the project
option in parserOptions
to the path of your tsconfig.json
file.
Then replace plugin:@eslint-react/recommended-legacy
with plugin:@eslint-react/recommended-type-checked-legacy
.
module.exports = {
// ...
parser: "@typescript-eslint/parser",
parserOptions: {
project: "./tsconfig.json",
},
extends: ["plugin:@eslint-react/recommended-type-checked-legacy"],
plugins: ["@eslint-react"],
// ...
};
Presets
The following presets are available in this plugin:
LegacyConfig presets
- recommended-legacy (
plugin:@eslint-react/recommended-legacy
)
Enforce recommended rules designed to catch common mistakes and prevent potential bugs. - recommended-type-checked-legacy (
plugin:@eslint-react/recommended-type-checked-legacy
)
Same as recommended-legacy but with additional rules that require type information. - debug-legacy (
plugin:@eslint-react/debug-legacy
)
Enable a series of rules that are useful for debugging purposes only.
(Not recommended unless you know what you are doing) - all-legacy (
plugin:@eslint-react/all-legacy
)
Enable all rules in this plugin except for debug rules. - off-legacy (
plugin:@eslint-react/off-legacy
)
Disable all rules in this plugin except for debug rules.
FlatConfig presets
- recommended
Enforce recommended rules designed to catch common mistakes and prevent potential bugs. - recommended-type-checked
Same as recommended but with additional rules that require type information. - debug
Enable a series of rules that are useful for debugging purposes only.
(Not recommended unless you know what you are doing) - all
Enable all rules in this plugin except for debug rules. - off
Disable all rules in this plugin except for debug rules.
Rules
Philosophy
- Do what a linter should do
- Focus on code rather than style
- Rules are better than options
Rule introduction or modification principles
- No Auto-fix. Auto-fix is a great feature, but it's not always safe and reliable. We prefer to not to do auto-fix at all than to implement it in a way that can cause more problems than it solves.
- Formatting independent. Rules should check for correctness, not style. We recommend using style focused tools for formatting (e.g. dprint).
- Rules over options [1]. Each rule should have a single purpose. Make multiple rules work together to achieve more complex behaviors instead of adding options to a single rule.
- Sensible defaults. Rules should be easy to setup and use with minimal configuration and sensible defaults.
Contributing
Before you start working on something, it's best to check if there is an existing issue first. It's also a good idea to reach the maintainer and confirm if it makes sense or if someone else is already working on it.
Please make sure to read the Contributing Guide before making a pull request.
Pull requests submitted without prior discussion can also be rejected without prior discussion.
Thank you to everyone contributing to ESLint x React!
License
This project is licensed under the MIT License - see the LICENSE file for details.
Inspiration
- eslint-plugin-perfectionist
- eslint-plugin-solid
- eslint-plugin-functional
- eslint-plugin-filenames-simple
- @tanstack/eslint-plugin-query
- rome/tools
- rust-clippy