eslint-config-problems
is an ESLint config that doesn't regulate your code style. It only catches actual problems with your code.
It's designed for use with Prettier, the opinionated code formatter; but you could also use this as a solid base config to add stylistic rules on top of.
Rules were chosen based on the following criteria:
- No stylistic rules; nothing that Prettier can fix
- Prevent guaranteed runtime errors (i.e. no undefined variables)
- Disallow "evil" things like
eval
- Disallow archaic language features like
with
- Disallow obvious bad practices like
new Number(13)
- Force usage of ES2015+ features supported by Node.js v10+
- Point out places the code could be made shorter. For example:
The
if (someCondition) return someValue; else { // Do something else }
else
block is unneeded, since theif
block contains areturn
statement.eslint-config-problems
will point this out to you (or auto-fix with the--fix
option).
eslint-config-problems
also sets ecmaVersion: 2020
in the parserOptions
, so that ESLint can parse modern code (including BigInt
) with no additional setup.
If you disagree; feel free to open an issue. I'm open to changing rules if you have a good reason.
If I missed a rule that prevents an actual problem or is otherwise in keeping with the general guidelines above, please open an issue as well; I just might add it.
eslint-config-problems
doesn't set any environments by default, other than the es6
environment. So you'll have to manually set your environment in your ESLint config. Here's a list of environments.
If you're using ES Modules, you will need to set sourceType: module
in the parserOptions
, like this:
parserOptions:
sourceType: module
npm install -D eslint eslint-config-problems
In your eslintrc.yaml:
extends: 'problems'
env:
# Set your environments here; for example:
node: true
npm install -D eslint prettier eslint-config-problems eslint-plugin-prettier
In your eslintrc.yaml:
extends: 'problems'
env:
# Set your environments here; for example:
node: true
plugins:
- prettier
rules:
- prettier/prettier: error