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-unicornConfigure it in package.json.
{
"name": "my-awesome-project",
"eslintConfig": {
"env": {
"es6": true
},
"parserOptions": {
"ecmaVersion": 2020,
"sourceType": "module"
},
"plugins": [
"unicorn"
],
"rules": {
"unicorn/better-regex": "error",
"unicorn/catch-error-name": "error",
"unicorn/consistent-function-scoping": "error",
"unicorn/custom-error-definition": "off",
"unicorn/error-message": "error",
"unicorn/escape-case": "error",
"unicorn/expiring-todo-comments": "error",
"unicorn/explicit-length-check": "error",
"unicorn/filename-case": "error",
"unicorn/import-index": "error",
"unicorn/new-for-builtins": "error",
"unicorn/no-abusive-eslint-disable": "error",
"unicorn/no-array-instanceof": "error",
"unicorn/no-console-spaces": "error",
"unicorn/no-fn-reference-in-iterator": "off",
"unicorn/no-for-loop": "error",
"unicorn/no-hex-escape": "error",
"unicorn/no-keyword-prefix": "off",
"no-nested-ternary": "off",
"unicorn/no-nested-ternary": "error",
"unicorn/no-new-buffer": "error",
"unicorn/no-process-exit": "error",
"unicorn/no-unreadable-array-destructuring": "error",
"unicorn/no-unsafe-regex": "off",
"unicorn/no-unused-properties": "off",
"unicorn/no-zero-fractions": "error",
"unicorn/number-literal-case": "error",
"unicorn/prefer-add-event-listener": "error",
"unicorn/prefer-dataset": "error",
"unicorn/prefer-event-key": "error",
"unicorn/prefer-flat-map": "error",
"unicorn/prefer-includes": "error",
"unicorn/prefer-modern-dom-apis": "error",
"unicorn/prefer-negative-index": "error",
"unicorn/prefer-node-append": "error",
"unicorn/prefer-node-remove": "error",
"unicorn/prefer-query-selector": "error",
"unicorn/prefer-reflect-apply": "error",
"unicorn/prefer-replace-all": "off",
"unicorn/prefer-set-has": "error",
"unicorn/prefer-spread": "error",
"unicorn/prefer-starts-ends-with": "error",
"unicorn/prefer-string-slice": "error",
"unicorn/prefer-text-content": "error",
"unicorn/prefer-trim-start-end": "error",
"unicorn/prefer-type-error": "error",
"unicorn/prevent-abbreviations": "error",
"unicorn/string-content": "off",
"unicorn/throw-new-error": "error"
}
}
}- better-regex - Improve regexes by making them shorter, consistent, and safer. (fixable)
- catch-error-name - Enforce a specific parameter name in catch clauses.
- consistent-function-scoping - Move function definitions to the highest possible scope.
- custom-error-definition - Enforce correct
Errorsubclassing. (fixable) - error-message - Enforce passing a
messagevalue when throwing a built-in error. - escape-case - Require escape sequences to use uppercase values. (fixable)
- expiring-todo-comments - Add expiration conditions to TODO comments.
- explicit-length-check - Enforce explicitly comparing the
lengthproperty of a value. (partly fixable) - filename-case - Enforce a case style for filenames.
- import-index - Enforce importing index files with
.. (fixable) - new-for-builtins - Enforce the use of
newfor all builtins, exceptString,Number,Boolean,SymbolandBigInt. (fixable) - no-abusive-eslint-disable - Enforce specifying rules to disable in
eslint-disablecomments. - no-array-instanceof - Require
Array.isArray()instead ofinstanceof Array. (fixable) - no-console-spaces - Do not use leading/trailing space between
console.logparameters. (fixable) - no-fn-reference-in-iterator - Prevent passing a function reference directly to iterator methods. (fixable)
- no-for-loop - Do not use a
forloop that can be replaced with afor-ofloop. (partly fixable) - no-hex-escape - Enforce the use of Unicode escapes instead of hexadecimal escapes. (fixable)
- no-keyword-prefix - Disallow identifiers starting with
neworclass. - no-nested-ternary - Disallow nested ternary expressions. (partly fixable)
- no-new-buffer - Enforce the use of
Buffer.from()andBuffer.alloc()instead of the deprecatednew Buffer(). (fixable) - no-process-exit - Disallow
process.exit(). - no-unreadable-array-destructuring - Disallow unreadable array destructuring.
- no-unsafe-regex - Disallow unsafe regular expressions.
- no-unused-properties - Disallow unused object properties.
- no-zero-fractions - Disallow number literals with zero fractions or dangling dots. (fixable)
- number-literal-case - Enforce proper case for numeric literals. (fixable)
- prefer-add-event-listener - Prefer
.addEventListener()and.removeEventListener()overon-functions. (partly fixable) - prefer-dataset - Prefer using
.dataseton DOM elements over.setAttribute(…). (fixable) - prefer-event-key - Prefer
KeyboardEvent#keyoverKeyboardEvent#keyCode. (partly fixable) - prefer-flat-map - Prefer
.flatMap(…)over.map(…).flat(). (fixable) - prefer-includes - Prefer
.includes()over.indexOf()when checking for existence or non-existence. (fixable) - prefer-modern-dom-apis - Prefer
.before()over.insertBefore(),.replaceWith()over.replaceChild(), prefer one of.before(),.after(),.append()or.prepend()overinsertAdjacentText()andinsertAdjacentElement(). (fixable) - prefer-negative-index - Prefer negative index over
.length - indexfor{String,Array,TypedArray}#slice()andArray#splice(). (fixable) - prefer-node-append - Prefer
Node#append()overNode#appendChild(). (fixable) - prefer-node-remove - Prefer
childNode.remove()overparentNode.removeChild(childNode). (fixable) - prefer-query-selector - Prefer
.querySelector()over.getElementById(),.querySelectorAll()over.getElementsByClassName()and.getElementsByTagName(). (partly fixable) - prefer-reflect-apply - Prefer
Reflect.apply()overFunction#apply(). (fixable) - prefer-replace-all - Prefer
String#replaceAll()over regex searches with the global flag. (fixable) - prefer-set-has - Prefer
Set#has()overArray#includes()when checking for existence or non-existence. (fixable) - prefer-spread - Prefer the spread operator over
Array.from(). (fixable) - prefer-starts-ends-with - Prefer
String#startsWith()&String#endsWith()over more complex alternatives. - prefer-string-slice - Prefer
String#slice()overString#substr()andString#substring(). (partly fixable) - prefer-text-content - Prefer
.textContentover.innerText. (fixable) - prefer-trim-start-end - Prefer
String#trimStart()/String#trimEnd()overString#trimLeft()/String#trimRight(). (fixable) - prefer-type-error - Enforce throwing
TypeErrorin type checking conditions. (fixable) - prevent-abbreviations - Prevent abbreviations. (partly fixable)
- string-content - Enforce better string content. (fixable)
- throw-new-error - Require
newwhen throwing an error. (fixable)
- prefer-exponentiation-operator - Use the built-in ESLint
prefer-exponentiation-operatorrule instead. - regex-shorthand - Renamed to
better-regex.
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.
