Skip to content

nickcall/eslint-plugin-unicorn

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

eslint-plugin-unicorn Build Status Coverage Status

Various awesome ESLint rules

You might want to check out XO, which includes this plugin.

Propose or contribute a new rule ➡

Install

$ npm install --save-dev eslint eslint-plugin-unicorn

Usage

Configure 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"
		}
	}
}

Rules

  • 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 Error subclassing. (fixable)
  • error-message - Enforce passing a message value 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 length property 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 new for all builtins, except String, Number, Boolean, Symbol and BigInt. (fixable)
  • no-abusive-eslint-disable - Enforce specifying rules to disable in eslint-disable comments.
  • no-array-instanceof - Require Array.isArray() instead of instanceof Array. (fixable)
  • no-console-spaces - Do not use leading/trailing space between console.log parameters. (fixable)
  • no-fn-reference-in-iterator - Prevent passing a function reference directly to iterator methods. (fixable)
  • no-for-loop - Do not use a for loop that can be replaced with a for-of loop. (partly fixable)
  • no-hex-escape - Enforce the use of Unicode escapes instead of hexadecimal escapes. (fixable)
  • no-keyword-prefix - Disallow identifiers starting with new or class.
  • no-nested-ternary - Disallow nested ternary expressions. (partly fixable)
  • no-new-buffer - Enforce the use of Buffer.from() and Buffer.alloc() instead of the deprecated new 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() over on-functions. (partly fixable)
  • prefer-dataset - Prefer using .dataset on DOM elements over .setAttribute(…). (fixable)
  • prefer-event-key - Prefer KeyboardEvent#key over KeyboardEvent#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() over insertAdjacentText() and insertAdjacentElement(). (fixable)
  • prefer-negative-index - Prefer negative index over .length - index for {String,Array,TypedArray}#slice() and Array#splice(). (fixable)
  • prefer-node-append - Prefer Node#append() over Node#appendChild(). (fixable)
  • prefer-node-remove - Prefer childNode.remove() over parentNode.removeChild(childNode). (fixable)
  • prefer-query-selector - Prefer .querySelector() over .getElementById(), .querySelectorAll() over .getElementsByClassName() and .getElementsByTagName(). (partly fixable)
  • prefer-reflect-apply - Prefer Reflect.apply() over Function#apply(). (fixable)
  • prefer-replace-all - Prefer String#replaceAll() over regex searches with the global flag. (fixable)
  • prefer-set-has - Prefer Set#has() over Array#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() over String#substr() and String#substring(). (partly fixable)
  • prefer-text-content - Prefer .textContent over .innerText. (fixable)
  • prefer-trim-start-end - Prefer String#trimStart() / String#trimEnd() over String#trimLeft() / String#trimRight(). (fixable)
  • prefer-type-error - Enforce throwing TypeError in type checking conditions. (fixable)
  • prevent-abbreviations - Prevent abbreviations. (partly fixable)
  • string-content - Enforce better string content. (fixable)
  • throw-new-error - Require new when throwing an error. (fixable)

Deprecated Rules

Recommended config

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.

Maintainers

Former

About

Various awesome ESLint rules

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • JavaScript 100.0%