Various awesome ESLint rules
You might want to check out XO, which includes this plugin.
Propose or contribute a new rule ➡
$ npm install --save-dev eslint eslint-plugin-unicorn
Configure it in package.json
.
{
"name": "my-awesome-project",
"eslintConfig": {
"env": {
"es6": true
},
"parserOptions": {
"ecmaVersion": 2019,
"sourceType": "module"
},
"plugins": [
"unicorn"
],
"rules": {
"unicorn/catch-error-name": "error",
"unicorn/explicit-length-check": "error",
"unicorn/filename-case": "error",
"unicorn/no-abusive-eslint-disable": "error",
"unicorn/no-process-exit": "error",
"unicorn/throw-new-error": "error",
"unicorn/number-literal-case": "error",
"unicorn/escape-case": "error",
"unicorn/no-array-instanceof": "error",
"unicorn/no-new-buffer": "error",
"unicorn/no-hex-escape": "error",
"unicorn/custom-error-definition": "off",
"unicorn/prefer-starts-ends-with": "error",
"unicorn/prefer-type-error": "error",
"unicorn/no-fn-reference-in-iterator": "off",
"unicorn/import-index": "error",
"unicorn/new-for-builtins": "error",
"unicorn/regex-shorthand": "error",
"unicorn/prefer-spread": "error",
"unicorn/error-message": "error",
"unicorn/no-unsafe-regex": "off",
"unicorn/prefer-add-event-listener": "error",
"unicorn/no-console-spaces": "error",
"unicorn/no-unreadable-array-destructuring": "error",
"unicorn/no-unused-properties": "off",
"unicorn/prefer-node-append": "error",
"unicorn/prefer-query-selector": "error",
"unicorn/prefer-node-remove": "error",
"unicorn/prefer-text-content": "error",
"unicorn/no-for-loop": "error",
"unicorn/prevent-abbreviations": "error",
"unicorn/prefer-includes": "error",
"unicorn/no-zero-fractions": "error"
}
}
}
- catch-error-name - Enforce a specific parameter name in catch clauses.
- explicit-length-check - Enforce explicitly comparing the
length
property of a value. (partly fixable) - filename-case - Enforce a case style for filenames.
- no-abusive-eslint-disable - Enforce specifying rules to disable in
eslint-disable
comments. - no-process-exit - Disallow
process.exit()
. - throw-new-error - Require
new
when throwing an error. (fixable) - number-literal-case - Enforce lowercase identifier and uppercase value for number literals. (fixable)
- escape-case - Require escape sequences to use uppercase values. (fixable)
- no-array-instanceof - Require
Array.isArray()
instead ofinstanceof Array
. (fixable) - no-new-buffer - Enforce the use of
Buffer.from()
andBuffer.alloc()
instead of the deprecatednew Buffer()
. (fixable) - no-hex-escape - Enforce the use of unicode escapes instead of hexadecimal escapes. (fixable)
- custom-error-definition - Enforce correct
Error
subclassing. (fixable) - prefer-starts-ends-with - Prefer
String#startsWith
&String#endsWith
over more complex alternatives. - prefer-type-error - Enforce throwing
TypeError
in type checking conditions. (fixable) - no-fn-reference-in-iterator - Prevents passing a function reference directly to iterator methods. (fixable)
- import-index - Enforce importing index files with
.
. (fixable) - new-for-builtins - Enforce the use of
new
for all builtins, exceptString
,Number
,Boolean
andSymbol
. (fixable) - regex-shorthand - Enforce the use of regex shorthands to improve readability. (fixable)
- prefer-spread - Prefer the spread operator over
Array.from()
. (fixable) - error-message - Enforce passing a
message
value when throwing a built-in error. - no-unsafe-regex - Disallow unsafe regular expressions.
- prefer-add-event-listener - Prefer
addEventListener
overon
-functions. (fixable) - prefer-exponentiation-operator - Prefer the exponentiation operator over
Math.pow()
(fixable) - no-console-spaces - Do not use leading/trailing space between
console.log
parameters. (fixable) - no-unreadable-array-destructuring - Disallow unreadable array destructuring.
- no-unused-properties - Disallow unused object properties.
- prefer-node-append - Prefer
append
overappendChild
. (fixable) - prefer-query-selector - Prefer
querySelector
overgetElementById
,querySelectorAll
overgetElementsByClassName
andgetElementsByTagName
. (partly fixable) - prefer-node-remove - Prefer
remove
overparentNode.removeChild
andparentElement.removeChild
. (fixable) - prefer-text-content - Prefer
textContent
overinnerText
. (fixable) - no-for-loop - Do not use a
for
loop that can be replaced with afor-of
loop. (fixable) - prevent-abbreviations - Prevent abbreviations (partly fixable)
- prefer-includes - Prefer
.includes()
over.indexOf()
when checking for existence or non-existence. (fixable) - no-zero-fractions - Disallow number literals with zero fractions or dangling dots. (fixable)
This plugin exports a recommended
config that enforces good practices.
Enable it in your package.json
with the extends
option:
{
"name": "my-awesome-project",
"eslintConfig": {
"extends": "plugin:unicorn/recommended"
}
}
See the ESLint docs for more information about extending config files.
Note: This config will also enable the correct parser options and environment.
MIT