GitHub - sindresorhus/eslint-plugin-unicorn: More than 100 powerful ESLint rules
better-regex
Improve regexes by making them shorter, consistent, and safer.
π§
catch-error-name
Enforce a specific parameter name in catch clauses.
β
π§
consistent-assert
Enforce consistent assertion style with
node:assert.
β
π§
consistent-date-clone
Prefer passing Date directly to the constructor when cloning.
β
βοΈ
π§
consistent-destructuring
Use destructured variables over properties.
π‘
consistent-empty-array-spread
Prefer consistent types when spreading a ternary in an array literal.
β
π§
consistent-existence-index-check
Enforce consistent style for element existence checks with indexOf(), lastIndexOf(), findIndex(), and findLastIndex().
β
βοΈ
π§
consistent-function-scoping
Move function definitions to the highest possible scope.
β
consistent-template-literal-escape
Enforce consistent style for escaping ${ in template literals.
β
π§
custom-error-definition
Enforce correct Error subclassing.
π§
empty-brace-spaces
Enforce no spaces between braces.
β
π§
error-message
Enforce passing a message value when creating a built-in error.
β
βοΈ
escape-case
Require escape sequences to use uppercase or lowercase values.
β
βοΈ
π§
expiring-todo-comments
Add expiration conditions to TODO comments.
β
βοΈ
explicit-length-check
Enforce explicitly comparing the length or size property of a value.
β
π§
π‘
filename-case
Enforce a case style for filenames.
β
import-style
Enforce specific import styles per module.
β
βοΈ
isolated-functions
Prevent usage of variables from outside the scope of isolated functions.
β
new-for-builtins
Enforce the use of new for all builtins, except String, Number, Boolean, Symbol and BigInt.
β
βοΈ
π§
π‘
no-abusive-eslint-disable
Enforce specifying rules to disable in eslint-disable comments.
β
βοΈ
no-accessor-recursion
Disallow recursive access to this within getters and setters.
β
βοΈ
no-anonymous-default-export
Disallow anonymous functions and classes as the default export.
β
βοΈ
π‘
no-array-callback-reference
Prevent passing a function reference directly to iterator methods.
β
π‘
no-array-for-each
Prefer forβ¦of over the forEach method.
β
βοΈ
π§
π‘
no-array-method-this-argument
Disallow using the this argument in array methods.
β
βοΈ
π§
π‘
no-array-reduce
Disallow Array#reduce() and Array#reduceRight().
β
no-array-reverse
Prefer Array#toReversed() over Array#reverse().
β
βοΈ
π‘
no-array-sort
Prefer Array#toSorted() over Array#sort().
β
βοΈ
π‘
no-await-expression-member
Disallow member access from await expression.
β
π§
no-await-in-promise-methods
Disallow using await in Promise method parameters.
β
βοΈ
π‘
no-console-spaces
Do not use leading/trailing space between console.log parameters.
β
βοΈ
π§
no-document-cookie
Do not use document.cookie directly.
β
βοΈ
no-empty-file
Disallow empty files.
β
βοΈ
no-for-loop
Do not use a for loop that can be replaced with a for-of loop.
β
π§
π‘
no-hex-escape
Enforce the use of Unicode escapes instead of hexadecimal escapes.
β
βοΈ
π§
no-immediate-mutation
Disallow immediate mutation after variable assignment.
β
π§
π‘
no-instanceof-builtins
Disallow instanceof with built-in objects
β
βοΈ
π§
π‘
no-invalid-fetch-options
Disallow invalid options in fetch() and new Request().
β
βοΈ
no-invalid-remove-event-listener
Prevent calling EventTarget#removeEventListener() with the result of an expression.
β
βοΈ
no-keyword-prefix
Disallow identifiers starting with new or class.
no-lonely-if
Disallow if statements as the only statement in if blocks without else.
β
βοΈ
π§
no-magic-array-flat-depth
Disallow a magic number as the depth argument in Array#flat(β¦).
β
βοΈ
no-named-default
Disallow named usage of default import and export.
β
βοΈ
π§
no-negated-condition
Disallow negated conditions.
β
βοΈ
π§
no-negation-in-equality-check
Disallow negated expression in equality check.
β
βοΈ
π‘
no-nested-ternary
Disallow nested ternary expressions.
β
π§
no-new-array
Disallow new Array().
β
βοΈ
π§
π‘
no-new-buffer
Enforce the use of Buffer.from() and Buffer.alloc() instead of the deprecated new Buffer().
β
βοΈ
π§
π‘
no-null
Disallow the use of the null literal.
β
π§
π‘
no-object-as-default-parameter
Disallow the use of objects as default parameters.
β
βοΈ
no-process-exit
Disallow process.exit().
β
βοΈ
no-single-promise-in-promise-methods
Disallow passing single-element arrays to Promise methods.
β
βοΈ
π§
π‘
no-static-only-class
Disallow classes that only have static members.
β
βοΈ
π§
no-thenable
Disallow then property.
β
βοΈ
no-this-assignment
Disallow assigning this to a variable.
β
βοΈ
no-typeof-undefined
Disallow comparing undefined using typeof.
β
βοΈ
π§
π‘
no-unnecessary-array-flat-depth
Disallow using 1 as the depth argument of Array#flat().
β
βοΈ
π§
no-unnecessary-array-splice-count
Disallow using .length or Infinity as the deleteCount or skipCount argument of Array#{splice,toSpliced}().
β
βοΈ
π§
no-unnecessary-await
Disallow awaiting non-promise values.
β
βοΈ
π§
no-unnecessary-polyfills
Enforce the use of built-in methods instead of unnecessary polyfills.
β
βοΈ
no-unnecessary-slice-end
Disallow using .length or Infinity as the end argument of {Array,String,TypedArray}#slice().
β
βοΈ
π§
no-unreadable-array-destructuring
Disallow unreadable array destructuring.
β
βοΈ
π§
no-unreadable-iife
Disallow unreadable IIFEs.
β
βοΈ
no-unused-properties
Disallow unused object properties.
no-useless-collection-argument
Disallow useless values or fallbacks in Set, Map, WeakSet, or WeakMap.
β
βοΈ
π§
π‘
no-useless-error-capture-stack-trace
Disallow unnecessary Error.captureStackTrace(β¦).
β
βοΈ
π§
no-useless-fallback-in-spread
Disallow useless fallback when spreading in object literals.
β
βοΈ
π§
no-useless-length-check
Disallow useless array length check.
β
βοΈ
π§
no-useless-promise-resolve-reject
Disallow returning/yielding Promise.resolve/reject() in async functions or promise callbacks
β
βοΈ
π§
no-useless-spread
Disallow unnecessary spread.
β
βοΈ
π§
no-useless-switch-case
Disallow useless case in switch statements.
β
βοΈ
π‘
no-useless-undefined
Disallow useless undefined.
β
βοΈ
π§
no-zero-fractions
Disallow number literals with zero fractions or dangling dots.
β
βοΈ
π§
number-literal-case
Enforce proper case for numeric literals.
β
βοΈ
π§
numeric-separators-style
Enforce the style of numeric separators by correctly grouping digits.
β
βοΈ
π§
prefer-add-event-listener
Prefer .addEventListener() and .removeEventListener() over on-functions.
β
βοΈ
π§
prefer-array-find
Prefer .find(β¦) and .findLast(β¦) over the first or last element from .filter(β¦).
β
βοΈ
π§
π‘
prefer-array-flat
Prefer Array#flat() over legacy techniques to flatten arrays.
β
βοΈ
π§
prefer-array-flat-map
Prefer .flatMap(β¦) over .map(β¦).flat().
β
βοΈ
π§
prefer-array-index-of
Prefer Array#{indexOf,lastIndexOf}() over Array#{findIndex,findLastIndex}() when looking for the index of an item.
β
βοΈ
π§
π‘
prefer-array-some
Prefer .some(β¦) over .filter(β¦).length check and .{find,findLast,findIndex,findLastIndex}(β¦).
β
βοΈ
π§
π‘
prefer-at
Prefer .at() method for index access and String#charAt().
β
βοΈ
π§
π‘
prefer-bigint-literals
Prefer BigInt literals over the constructor.
β
βοΈ
π§
π‘
prefer-blob-reading-methods
Prefer Blob#arrayBuffer() over FileReader#readAsArrayBuffer(β¦) and Blob#text() over FileReader#readAsText(β¦).
β
βοΈ
prefer-class-fields
Prefer class field declarations over this assignments in constructors.
β
βοΈ
π§
π‘
prefer-classlist-toggle
Prefer using Element#classList.toggle() to toggle class names.
β
βοΈ
π§
π‘
prefer-code-point
Prefer String#codePointAt(β¦) over String#charCodeAt(β¦) and String.fromCodePoint(β¦) over String.fromCharCode(β¦).
β
βοΈ
π‘
prefer-date-now
Prefer Date.now() to get the number of milliseconds since the Unix Epoch.
β
βοΈ
π§
prefer-default-parameters
Prefer default parameters over reassignment.
β
βοΈ
π‘
prefer-dom-node-append
Prefer Node#append() over Node#appendChild().
β
βοΈ
π§
prefer-dom-node-dataset
Prefer using .dataset on DOM elements over calling attribute methods.
β
βοΈ
π§
prefer-dom-node-remove
Prefer childNode.remove() over parentNode.removeChild(childNode).
β
βοΈ
π§
π‘
prefer-dom-node-text-content
Prefer .textContent over .innerText.
β
βοΈ
π‘
prefer-event-target
Prefer EventTarget over EventEmitter.
β
βοΈ
prefer-export-from
Prefer exportβ¦from when re-exporting.
β
π§
π‘
prefer-global-this
Prefer globalThis over window, self, and global.
β
βοΈ
π§
prefer-import-meta-properties
Prefer import.meta.{dirname,filename} over legacy techniques for getting file paths.
π§
prefer-includes
Prefer .includes() over .indexOf(), .lastIndexOf(), and Array#some() when checking for existence or non-existence.
β
βοΈ
π§
π‘
prefer-json-parse-buffer
Prefer reading a JSON file as a buffer.
π§
prefer-keyboard-event-key
Prefer KeyboardEvent#key over KeyboardEvent#keyCode.
β
βοΈ
π§
prefer-logical-operator-over-ternary
Prefer using a logical operator over a ternary.
β
βοΈ
π‘
prefer-math-min-max
Prefer Math.min() and Math.max() over ternaries for simple comparisons.
β
βοΈ
π§
prefer-math-trunc
Enforce the use of Math.trunc instead of bitwise operators.
β
βοΈ
π§
π‘
prefer-modern-dom-apis
Prefer .before() over .insertBefore(), .replaceWith() over .replaceChild(), prefer one of .before(), .after(), .append() or .prepend() over insertAdjacentText() and insertAdjacentElement().
β
βοΈ
π§
prefer-modern-math-apis
Prefer modern Math APIs over legacy patterns.
β
βοΈ
π§
prefer-module
Prefer JavaScript modules (ESM) over CommonJS.
β
βοΈ
π§
π‘
prefer-native-coercion-functions
Prefer using String, Number, BigInt, Boolean, and Symbol directly.
β
βοΈ
π§
prefer-negative-index
Prefer negative index over .length - index when possible.
β
βοΈ
π§
prefer-node-protocol
Prefer using the node: protocol when importing Node.js builtin modules.
β
βοΈ
π§
prefer-number-properties
Prefer Number static properties over global ones.
β
βοΈ
π§
π‘
prefer-object-from-entries
Prefer using Object.fromEntries(β¦) to transform a list of key-value pairs into an object.
β
βοΈ
π§
prefer-optional-catch-binding
Prefer omitting the catch binding parameter.
β
βοΈ
π§
prefer-prototype-methods
Prefer borrowing methods from the prototype instead of the instance.
β
βοΈ
π§
prefer-query-selector
Prefer .querySelector() over .getElementById(), .querySelectorAll() over .getElementsByClassName() and .getElementsByTagName() and .getElementsByName().
β
π§
prefer-reflect-apply
Prefer Reflect.apply() over Function#apply().
β
βοΈ
π§
prefer-regexp-test
Prefer RegExp#test() over String#match() and RegExp#exec().
β
βοΈ
π§
π‘
prefer-response-static-json
Prefer Response.json() over new Response(JSON.stringify()).
β
βοΈ
π§
prefer-set-has
Prefer Set#has() over Array#includes() when checking for existence or non-existence.
β
βοΈ
π§
π‘
prefer-set-size
Prefer using Set#size instead of Array#length.
β
βοΈ
π§
prefer-single-call
Enforce combining multiple Array#push(), Element#classList.{add,remove}(), and importScripts() into one call.
β
βοΈ
π§
π‘
prefer-spread
Prefer the spread operator over Array.from(β¦), Array#concat(β¦), Array#{slice,toSpliced}() and String#split('').
β
π§
π‘
prefer-string-raw
Prefer using the String.raw tag to avoid escaping \.
β
βοΈ
π§
prefer-string-replace-all
Prefer String#replaceAll() over regex searches with the global flag.
β
βοΈ
π§
prefer-string-slice
Prefer String#slice() over String#substr() and String#substring().
β
βοΈ
π§
prefer-string-starts-ends-with
Prefer String#startsWith() & String#endsWith() over RegExp#test().
β
βοΈ
π§
π‘
prefer-string-trim-start-end
Prefer String#trimStart() / String#trimEnd() over String#trimLeft() / String#trimRight().
β
βοΈ
π§
prefer-structured-clone
Prefer using structuredClone to create a deep clone.
β
βοΈ
π‘
prefer-switch
Prefer switch over multiple else-if.
β
βοΈ
π§
prefer-ternary
Prefer ternary expressions over simple if-else statements.
β
βοΈ
π§
prefer-top-level-await
Prefer top-level await over top-level promises and async function calls.
β
βοΈ
π‘
prefer-type-error
Enforce throwing TypeError in type checking conditions.
β
βοΈ
π§
prevent-abbreviations
Prevent abbreviations.
β
π§
relative-url-style
Enforce consistent relative URL style.
β
βοΈ
π§
π‘
require-array-join-separator
Enforce using the separator argument with Array#join().
β
βοΈ
π§
require-module-attributes
Require non-empty module attributes for imports and exports
β
βοΈ
π§
require-module-specifiers
Require non-empty specifier list in import and export statements.
β
βοΈ
π§
π‘
require-number-to-fixed-digits-argument
Enforce using the digits argument with Number#toFixed().
β
βοΈ
π§
require-post-message-target-origin
Enforce using the targetOrigin argument with window.postMessage().
π‘
string-content
Enforce better string content.
π§
π‘
switch-case-braces
Enforce consistent brace style for case clauses.
β
π§
template-indent
Fix whitespace-insensitive template indentation.
β
π§
text-encoding-identifier-case
Enforce consistent case for text encoding identifiers.
β
βοΈ
π§
π‘
throw-new-error
Require new when creating an error.
β
βοΈ
π§