# Eslint > ESLint is an open source JavaScript linting utility originally created by Nicholas C. Zakas in June 2013. Code linting is a type of static analysis that is frequently used to find problematic patt ## Pages - [About](about.md): ESLint is an open source JavaScript linting utility originally created by Nicholas C. Zakas in June 2013. Code [linti... - [Architecture](contribute-architecture.md): :::img-container - [Code Conventions](contribute-code-conventions.md): Code conventions for ESLint are determined by - [Code of Conduct](contribute-code-of-conduct.md): ESLint welcomes contributions from everyone and adheres to the [OpenJS Foundation Code of Conduct](https://eslint.org... - [Contribute to Core Rules](contribute-core-rules.md): The ESLint core rules are the rules included in the ESLint package. - [Set up a Development Environment](contribute-development-environment.md): {%- from 'components/npm_tabs.macro.html' import npm_tabs with context %} - [Governance](contribute-governance.md): ESLint is an open source project that depends on contributions from the community. Anyone may contribute to the proje... - [Contribute to ESLint](contribute.md): One of the great things about open source projects is that anyone can contribute in any number of meaningful ways. ES... - [Package.json Conventions](contribute-package-json-conventions.md): The following applies to the "scripts" section of`package.json`files. - [Propose a New Rule](contribute-propose-new-rule.md): ESLint is all about rules. For most of the project's lifetime, we've had over 200 rules, and that list continues to g... - [Propose a Rule Change](contribute-propose-rule-change.md): Occasionally, a core ESLint rule needs to be changed. This is not necessarily a bug, but rather, an enhancement that ... - [Submit a Pull Request](contribute-pull-requests.md): If you want to contribute to an ESLint repo, please use a GitHub pull request. This is the fastest way for us to eval... - [Report Bugs](contribute-report-bugs.md): If you think you've found a bug in ESLint, please [create a new issue](https://github.com/eslint/eslint/issues/new/ch... - [Report a Security Vulnerability](contribute-report-security-vulnerability.md): To report a security vulnerability in ESLint, please use our [create an advisory form](https://github.com/eslint/esli... - [Request a Change](contribute-request-change.md): If you'd like to request a change to ESLint, please [create a new issue](https://github.com/eslint/eslint/issues/new/... - [Run the Tests](contribute-tests.md): Most parts of ESLint have unit tests associated with them. Unit tests are written using [Mocha](https://mochajs.org/)... - [Work on Issues](contribute-work-on-issue.md): Our public [issues tracker](https://github.com/eslint/eslint/issues) lists all of the things we plan on doing as well... - [Code Path Analysis Details](extend-code-path-analysis.md): ESLint's rules can use code paths. - [Custom Formatters](extend-custom-formatters.md): Custom formatters let you display linting results in a format that best fits your needs, whether that's in a specific... - [Custom Parsers](extend-custom-parsers.md): {%- from 'components/npm_tabs.macro.html' import npm_tabs with context %} - [Custom Processors (Deprecated)](extend-custom-processors-deprecated.md): ::: warning - [Custom Processors](extend-custom-processors.md): You can also create custom processors that tell ESLint how to process files other than standard JavaScript. For examp... - [Custom Rule Tutorial](extend-custom-rule-tutorial.md): {%- from 'components/npm_tabs.macro.html' import npm_tabs with context %} - [Working with Rules (Deprecated)](extend-custom-rules-deprecated.md): As of ESLint v9.0.0, the function-style rule format that was current in ESLint <= 2.13.1 is no longer supported. - [Custom Rules](extend-custom-rules.md): You can create custom rules to use with ESLint. You might want to create a custom rule if the [core rules](../rules/)... - [Extend ESLint](extend.md): This guide is intended for those who wish to extend the functionality of ESLint. - [Languages](extend-languages.md): Starting with ESLint v9.7.0, you can extend ESLint with additional languages through plugins. While ESLint began as a... - [Plugin Migration to Flat Config](extend-plugin-migration-flat-config.md): Beginning in ESLint v9.0.0, the default configuration system will be the new flat config system. In order for your pl... - [Create Plugins](extend-plugins.md): ESLint plugins extend ESLint with additional functionality. In most cases, you'll extend ESLint by creating plugins t... - [Rule Deprecation](extend-rule-deprecation.md): The rule deprecation metadata describes whether a rule is deprecated and how the rule can be replaced if there is a r... - [ScopeManager](extend-scope-manager-interface.md): This document was written based on the implementation of [eslint-scope](https://github.com/eslint/js/tree/main/packag... - [Selectors](extend-selectors.md): Some rules and APIs allow the use of selectors to query an AST. This page is intended to: - [Share Configurations (Deprecated)](extend-shareable-configs-deprecated.md): ::: warning - [Share Configurations](extend-shareable-configs.md): To share your ESLint configuration, create a **shareable config**. You can publish your shareable config on [npm](htt... - [Stats Data](extend-stats.md): {%- from 'components/npx_tabs.macro.html' import npx_tabs %} - [Ways to Extend ESLint](extend-ways-to-extend.md): ESLint is highly pluggable and configurable. There are a variety of ways that you can extend ESLint's functionality. - [Integrate ESLint](integrate.md): This guide is intended for those who wish to integrate the functionality of ESLint into other applications by using t... - [Integrate with the Node.js API Tutorial](integrate-integration-tutorial.md): {%- from 'components/npm_tabs.macro.html' import npm_tabs with context %} - [Node.js API Reference](integrate-nodejs-api.md): While ESLint is designed to be run on the command line, it's possible to use ESLint programmatically through the Node... - [alert](library-alert.md): The alert message comes in three different types: a warning, a tip, and an important note. - [Buttons](library-buttons.md): {% from 'components/button.macro.html' import button %} - [Correct and incorrect code usage](library-code-blocks.md): To indicate correct and incorrect code usage, some code blocks can have correct and incorrect icons added to them, re... - [Code block tabs](library-code-tabs.md): This component is a partial found in`/components/code-tabs.html`. To use this component, copy the code for the tabs ... - [Language Switcher](library-language-switcher.md): {% include 'components/language-switcher.html' %} - [Link Card](library-link-card.md): Links can be rendered as cards by using the`link`shortcode. The only required parameter is the URL you wish to scra... - [Related rules](library-related-rules.md): The`related_rules`shortcode is used to add one or more related rules to a rule. - [Rule categories](library-rule-categories.md): The rule categories—namely “recommended”, “fixable”, and “hasSuggestions”—are shown in the [rules page](../rules/). T... - [Replacement Rule list](library-rule-list.md): The rule list is a macro defined in`components/rule-list.macro.html`. The macro accepts a list of`ReplacedByInfo`a... - [Rule](library-rule.md): The rule component is a macro defined in`/components/rule.macro.html`. The macro accepts a set of parameters used to... - [Social Icons](library-social-icons.md): {% include 'components/social-icons.html' %} - [Theme Switcher](library-theme-switcher.md): {% include 'components/theme-switcher.html' %} - [Version Switcher](library-version-switcher.md): {% include 'components/version-switcher.html' %} - [Maintain ESLint](maintain.md): This guide is intended for those who work as part of the ESLint project team. - [Manage Issues and Pull Requests](maintain-manage-issues.md): New issues and pull requests are filed frequently, and how we respond to those issues directly affects the success of... - [Manage Releases](maintain-manage-releases.md): Releases are when a project formally publishes a new version so the community can use it. There are two types of rele... - [How ESLint is Maintained](maintain-overview.md): This page explains the different roles and structures involved in maintaining ESLint. - [Review Pull Requests](maintain-review-pull-requests.md): Pull requests are submitted frequently and represent our best opportunity to interact with the community. As such, it... - [Working Groups](maintain-working-groups.md): The ESLint [Technical Steering Committee](../contribute/governance#technical-steering-committee-tsc) (TSC) may form w... - [Feature Flags](pages-flags.md): {%- from 'components/npx_tabs.macro.html' import npx_tabs %} - [Documentation](pages.md): Welcome to our documentation pages! What would you like to view? - [Languages](pages-languages.md): {%- from 'components/hero.macro.html' import hero %} - [Rules Reference](pages-rules.md): {% from 'components/rule-categories.macro.html' import ruleCategories, recommended, fixable, hasSuggestions %} - [Versions](pages-versions.md): {%- from 'components/hero.macro.html' import hero %} - [accessor-pairs](rules-accessor-pairs.md): It's a common mistake in JavaScript to create an object with just a setter for a property but never have a correspond... - [array-bracket-newline](rules-array-bracket-newline.md): A number of style guides require or disallow line breaks inside of array brackets. - [array-bracket-spacing](rules-array-bracket-spacing.md): A number of style guides require or disallow spaces between array brackets and other tokens. This rule - [array-callback-return](rules-array-callback-return.md): `Array`has several methods for filtering, mapping, and folding. - [array-element-newline](rules-array-element-newline.md): A number of style guides require or disallow line breaks between array elements. - [arrow-body-style](rules-arrow-body-style.md): Arrow functions have two syntactic forms for their function bodies. They may be defined with a *block* body (denoted... - [arrow-parens](rules-arrow-parens.md): Arrow functions can omit parentheses when they have exactly one parameter. In all other cases the parameter(s) must - [arrow-spacing](rules-arrow-spacing.md): This rule normalize style of spacing before/after an arrow function's arrow(`=>`). - [block-scoped-var](rules-block-scoped-var.md): The`block-scoped-var`rule generates warnings when variables are used outside of the block in which they were define... - [block-spacing](rules-block-spacing.md): This rule enforces consistent spacing inside an open block token and the next token on the same line. This rule also ... - [brace-style](rules-brace-style.md): Brace style is closely related to [indent style](https://en.wikipedia.org/wiki/Indent_style) in programming and descr... - [callback-return](rules-callback-return.md): The callback pattern is at the heart of most I/O and event-driven programming - [camelcase](rules-camelcase.md): When it comes to naming variables, style guides generally fall into one of two camps: camelcase (`variableName`) and ... - [capitalized-comments](rules-capitalized-comments.md): Comments are useful for leaving information for future developers. In order for that information to be useful and not... - [class-methods-use-this](rules-class-methods-use-this.md): [Classes](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Classes) are often used to encapsulate re... - [comma-dangle](rules-comma-dangle.md): Trailing commas in object literals are valid according to the ECMAScript 5 (and ECMAScript 3!) spec. However, IE8 (wh... - [comma-spacing](rules-comma-spacing.md): Spacing around commas improves readability of a list of items. Although most of the style guidelines for languages pr... - [comma-style](rules-comma-style.md): The Comma Style rule enforces styles for comma-separated lists. There are two comma styles primarily used in JavaScript: - [complexity](rules-complexity.md): Cyclomatic complexity measures the number of linearly independent paths through a program's source code. This rule al... - [computed-property-spacing](rules-computed-property-spacing.md): While formatting preferences are very personal, a number of style guides require - [consistent-return](rules-consistent-return.md): Unlike statically-typed languages which enforce that a function returns a specified type of value, JavaScript allows ... - [consistent-this](rules-consistent-this.md): It is often necessary to capture the current execution context in order to make it available subsequently. A prominen... - [constructor-super](rules-constructor-super.md): Constructors of derived classes must call`super()`. - [curly](rules-curly.md): JavaScript allows the omission of curly braces when a block contains only one statement. However, it is considered by... - [default-case-last](rules-default-case-last.md): A`switch`statement can optionally have a`default`clause. - [default-case](rules-default-case.md): Some code conventions require that all`switch`statements have a`default`case, even if the default case is empty, ... - [default-param-last](rules-default-param-last.md): Putting default parameter at last allows function calls to omit optional tail arguments. - [dot-location](rules-dot-location.md): JavaScript allows you to place newlines before or after a dot in a member expression. - [dot-notation](rules-dot-notation.md): In JavaScript, one can access properties using the dot notation (`foo.bar`) or square-bracket notation (`foo["bar"]`)... - [eol-last](rules-eol-last.md): Trailing newlines in non-empty files are a common UNIX idiom. Benefits of - [eqeqeq](rules-eqeqeq.md): It is considered good practice to use the type-safe equality operators`===`and`!==`instead of their regular count... - [for-direction](rules-for-direction.md): A`for`loop with a stop condition that can never be reached, such as one with a counter that moves in the wrong dire... - [func-call-spacing](rules-func-call-spacing.md): When calling a function, developers may insert optional whitespace between the function's name and the parentheses th... - [func-name-matching](rules-func-name-matching.md): This rule requires function names to match the name of the variable or property to which they are assigned. The rule ... - [func-names](rules-func-names.md): A pattern that's becoming more common is to give function expressions names to aid in debugging. For example: - [func-style](rules-func-style.md): There are two ways of defining functions in JavaScript:`function`declarations and function expressions assigned to ... - [function-call-argument-newline](rules-function-call-argument-newline.md): A number of style guides require or disallow line breaks between arguments of a function call. - [function-paren-newline](rules-function-paren-newline.md): Many style guides require or disallow newlines inside of function parentheses. - [generator-star-spacing](rules-generator-star-spacing.md): Generators are a new type of function in ECMAScript 6 that can return multiple values over time. - [generator-star](rules-generator-star.md): Enforces consistent spacing around the asterisk in generator functions. - [getter-return](rules-getter-return.md): The get syntax binds an object property to a function that will be called when that property is looked up. It was fir... - [global-require](rules-global-require.md): In Node.js, module dependencies are included using the`require()`function, such as: - [global-strict](rules-global-strict.md): Requires or disallows strict mode directives in the global scope. - [grouped-accessor-pairs](rules-grouped-accessor-pairs.md): A getter and setter for the same property don't necessarily have to be defined adjacent to each other. - [guard-for-in](rules-guard-for-in.md): Looping over objects with a`for in`loop will include properties that are inherited through the prototype chain. Thi... - [handle-callback-err](rules-handle-callback-err.md): In Node.js, a common pattern for dealing with asynchronous behavior is called the callback pattern. - [id-denylist](rules-id-denylist.md): "There are only two hard things in Computer Science: cache invalidation and naming things." — Phil Karlton - [id-length](rules-id-length.md): Very short identifier names like`e`,`x`,`_t`or very long ones like`hashGeneratorResultOutputContainerObject`can... - [id-match](rules-id-match.md): "There are only two hard things in Computer Science: cache invalidation and naming things." — Phil Karlton - [implicit-arrow-linebreak](rules-implicit-arrow-linebreak.md): An arrow function body can contain an implicit return as an expression instead of a block body. It can be useful to e... - [indent-legacy](rules-indent-legacy.md): ESLint 4.0.0 introduced a rewrite of the [`indent`](indent) rule, which now reports more errors than it did in previo... - [indent](rules-indent.md): There are several common guidelines which require specific indentation of nested blocks and statements, like: - [init-declarations](rules-init-declarations.md): In JavaScript, variables can be assigned during declaration, or at any point afterwards using an assignment statement... - [jsx-quotes](rules-jsx-quotes.md): JSX attribute values can contain string literals, which are delimited with single or double quotes. - [key-spacing](rules-key-spacing.md): This rule enforces spacing around the colon in object literal properties. It can verify each property individually, o... - [keyword-spacing](rules-keyword-spacing.md): Keywords are syntax elements of JavaScript, such as`try`and`if`. - [line-comment-position](rules-line-comment-position.md): Line comments can be positioned above or beside code. This rule helps teams maintain a consistent style. - [linebreak-style](rules-linebreak-style.md): When developing with a lot of people all having different editors, VCS applications and operating systems it may occu... - [lines-around-comment](rules-lines-around-comment.md): Many style guides require empty lines before or after comments. The primary goal - [lines-around-directive](rules-lines-around-directive.md): Directives are used in JavaScript to indicate to the execution environment that a script would like to opt into a fea... - [lines-between-class-members](rules-lines-between-class-members.md): This rule improves readability by enforcing lines between class members. It will not check empty lines before the fir... - [logical-assignment-operators](rules-logical-assignment-operators.md): ES2021 introduces the assignment operator shorthand for the logical operators`||`,`&&`and`??`. - [max-classes-per-file](rules-max-classes-per-file.md): Files containing multiple classes can often result in a less navigable - [max-depth](rules-max-depth.md): Many developers consider code difficult to read if blocks are nested beyond a certain depth. - [max-len](rules-max-len.md): Very long lines of code in any language can be difficult to read. In order to aid in readability and maintainability ... - [max-lines-per-function](rules-max-lines-per-function.md): Some people consider large functions a code smell. Large functions tend to do a lot of things and can make it hard fo... - [max-lines](rules-max-lines.md): Some people consider large files a code smell. Large files tend to do a lot of things and can make it hard following ... - [max-nested-callbacks](rules-max-nested-callbacks.md): Many JavaScript libraries use the callback pattern to manage asynchronous operations. A program of any complexity wil... - [max-params](rules-max-params.md): Functions that take numerous parameters can be difficult to read and write because it requires the memorization of wh... - [max-statements-per-line](rules-max-statements-per-line.md): A line of code containing too many statements can be difficult to read. Code is generally read from the top down, esp... - [max-statements](rules-max-statements.md): The`max-statements`rule allows you to specify the maximum number of statements allowed in a function. - [multiline-comment-style](rules-multiline-comment-style.md): Many style guides require a particular style for comments that span multiple lines. For example, some style guides pr... - [multiline-ternary](rules-multiline-ternary.md): JavaScript allows operands of ternary expressions to be separated by newlines, which can improve the readability of y... - [new-cap](rules-new-cap.md): The`new`operator in JavaScript creates a new instance of a particular type of object. That type of object is repres... - [new-parens](rules-new-parens.md): JavaScript allows the omission of parentheses when invoking a function via the`new`keyword and the constructor has ... - [newline-after-var](rules-newline-after-var.md): As of today there is no consistency in separating variable declarations from the rest of the code. Some developers le... - [newline-before-return](rules-newline-before-return.md): There is no hard and fast rule about whether empty lines should precede`return`statements in JavaScript. However, c... - [newline-per-chained-call](rules-newline-per-chained-call.md): Chained method calls on a single line without line breaks are harder to read, so some developers place a newline char... - [no-alert](rules-no-alert.md): JavaScript's`alert`,`confirm`, and`prompt`functions are widely considered to be obtrusive as UI elements and shou... - [no-array-constructor](rules-no-array-constructor.md): Use of the`Array`constructor to construct a new array is generally - [no-arrow-condition](rules-no-arrow-condition.md): Disallows arrow functions where test conditions are expected. - [no-async-promise-executor](rules-no-async-promise-executor.md): The`new Promise`constructor accepts an *executor* function as an argument, which has`resolve`and`reject`paramet... - [no-await-in-loop](rules-no-await-in-loop.md): Performing an operation on each element of an iterable is a common task. However, performing an - [no-bitwise](rules-no-bitwise.md): The use of bitwise operators in JavaScript is very rare and often`&`or`|`is simply a mistyped`&&`or`||`, which... - [no-buffer-constructor](rules-no-buffer-constructor.md): In Node.js, the behavior of the`Buffer`constructor is different depending on the type of its argument. Passing an a... - [no-caller](rules-no-caller.md): The use of`arguments.caller`and`arguments.callee`make several code optimizations impossible. They have been depre... - [no-case-declarations](rules-no-case-declarations.md): This rule disallows lexical declarations (`let`,`const`,`function`and`class`) - [no-catch-shadow](rules-no-catch-shadow.md): In IE 8 and earlier, the catch clause parameter can overwrite the value of a variable in the outer scope, if that var... - [no-class-assign](rules-no-class-assign.md): `ClassDeclaration`creates a variable, and we can modify the variable. - [no-comma-dangle](rules-no-comma-dangle.md): Disallows trailing commas in object and array literals. - [no-compare-neg-zero](rules-no-compare-neg-zero.md): The rule should warn against code that tries to compare against`-0`, since that will not work as intended. That is, ... - [no-cond-assign](rules-no-cond-assign.md): In conditional statements, it is very easy to mistype a comparison operator (such as`==`) as an assignment operator ... - [no-confusing-arrow](rules-no-confusing-arrow.md): Arrow functions (`=>`) are similar in syntax to some comparison operators (`>`,`=`). This rule warns... - [no-console](rules-no-console.md): In JavaScript that is designed to be executed in the browser, it's considered a best practice to avoid using methods ... - [no-const-assign](rules-no-const-assign.md): Constant bindings cannot be modified. An attempt to modify a constant binding will raise a runtime error. - [no-constant-binary-expression](rules-no-constant-binary-expression.md): Comparisons which will always evaluate to true or false and logical expressions (`||`,`&&`,`??`) which either alway... - [no-constant-condition](rules-no-constant-condition.md): A constant expression (for example, a literal) as a test condition might be a typo or development trigger for a speci... - [no-constructor-return](rules-no-constructor-return.md): In JavaScript, returning a value in the constructor of a class may be a mistake. Forbidding this pattern prevents mis... - [no-continue](rules-no-continue.md): The`continue`statement terminates execution of the statements in the current iteration of the current or labeled lo... - [no-control-regex](rules-no-control-regex.md): Control characters are special, invisible characters in the ASCII range 0-31. These characters are rarely used in Jav... - [no-debugger](rules-no-debugger.md): The`debugger`statement is used to tell the executing JavaScript environment to stop execution and start up a debugg... - [no-delete-var](rules-no-delete-var.md): The purpose of the`delete`operator is to remove a property from an object. Using the`delete`operator on a variabl... - [no-div-regex](rules-no-div-regex.md): Characters`/=`at the beginning of a regular expression literal can be confused with a division assignment operator. - [no-dupe-args](rules-no-dupe-args.md): If more than one parameter has the same name in a function definition, the last occurrence "shadows" the preceding oc... - [no-dupe-class-members](rules-no-dupe-class-members.md): If there are declarations of the same name in class members, the last declaration overwrites other declarations silen... - [no-dupe-else-if](rules-no-dupe-else-if.md): `if-else-if`chains are commonly used when there is a need to execute only one branch (or at most one branch) out of ... - [no-dupe-keys](rules-no-dupe-keys.md): Multiple properties with the same key in object literals can cause unexpected behavior in your application. - [no-duplicate-case](rules-no-duplicate-case.md): If a`switch`statement has duplicate test expressions in`case`clauses, it is likely that a programmer copied a`ca... - [no-duplicate-imports](rules-no-duplicate-imports.md): Using a single`import`statement per module will make the code clearer because you can see everything being imported... - [no-else-return](rules-no-else-return.md): If an`if`block contains a`return`statement, the`else`block becomes unnecessary. Its contents can be placed outs... - [no-empty-character-class](rules-no-empty-character-class.md): Because empty character classes in regular expressions do not match anything, they might be typing mistakes. - [no-empty-class](rules-no-empty-class.md): Disallows empty character classes in regular expressions. - [no-empty-function](rules-no-empty-function.md): Empty functions can reduce readability because readers need to guess whether it's intentional or not. - [no-empty-label](rules-no-empty-label.md): Disallows labels for anything other than loops and switches. - [no-empty-pattern](rules-no-empty-pattern.md): When using destructuring, it's possible to create a pattern that has no effect. This happens when empty curly braces ... - [no-empty-static-block](rules-no-empty-static-block.md): Empty static blocks, while not technically errors, usually occur due to refactoring that wasn't completed. They can c... - [no-empty](rules-no-empty.md): Empty block statements, while not technically errors, usually occur due to refactoring that wasn't completed. They ca... - [no-eq-null](rules-no-eq-null.md): Comparing to`null`without a type-checking operator (`==`or`!=`), can have unintended results as the comparison wi... - [no-eval](rules-no-eval.md): JavaScript's`eval()`function is potentially dangerous and is often misused. Using`eval()`on untrusted code can op... - [no-ex-assign](rules-no-ex-assign.md): If a`catch`clause in a`try`statement accidentally (or purposely) assigns another value to the exception parameter... - [no-extend-native](rules-no-extend-native.md): In JavaScript, you can extend any object, including builtin or "native" objects. Sometimes people change the behavior... - [no-extra-bind](rules-no-extra-bind.md): The`bind()`method is used to create functions with specific`this`values and, optionally, binds arguments to speci... - [no-extra-boolean-cast](rules-no-extra-boolean-cast.md): In contexts such as an`if`statement's test where the result of the expression will already be coerced to a Boolean,... - [no-extra-label](rules-no-extra-label.md): If a loop contains no nested loops or switches, labeling the loop is unnecessary. - [no-extra-parens](rules-no-extra-parens.md): This rule restricts the use of parentheses to only where they are necessary. - [no-extra-semi](rules-no-extra-semi.md): Typing mistakes and misunderstandings about where semicolons are required can lead to semicolons that are unnecessary... - [no-extra-strict](rules-no-extra-strict.md): Disallows strict mode directives when already in strict mode. - [no-fallthrough](rules-no-fallthrough.md): The`switch`statement in JavaScript is one of the more error-prone constructs of the language thanks in part to the ... - [no-floating-decimal](rules-no-floating-decimal.md): Float values in JavaScript contain a decimal point, and there is no requirement that the decimal point be preceded or... - [no-func-assign](rules-no-func-assign.md): JavaScript functions can be written as a FunctionDeclaration`function foo() { ... }`or as a FunctionExpression`con... - [no-global-assign](rules-no-global-assign.md): JavaScript environments contain a number of built-in global variables, such as`window`in browsers and`process`in ... - [no-implicit-coercion](rules-no-implicit-coercion.md): In JavaScript, there are a lot of different ways to convert value types. - [no-implicit-globals](rules-no-implicit-globals.md): It is the best practice to avoid 'polluting' the global scope with variables that are intended to be local to the scr... - [no-implied-eval](rules-no-implied-eval.md): It's considered a good practice to avoid using`eval()`in JavaScript. There are security and performance implication... - [no-import-assign](rules-no-import-assign.md): The updates of imported bindings by ES Modules cause runtime errors. - [no-inline-comments](rules-no-inline-comments.md): Some style guides disallow comments on the same line as code. Code can become difficult to read if comments immediate... - [no-inner-declarations](rules-no-inner-declarations.md): In JavaScript, prior to ES6, a function declaration is only allowed in the first level of a program or the body of an... - [no-invalid-regexp](rules-no-invalid-regexp.md): An invalid pattern in a regular expression literal is a`SyntaxError`when the code is parsed, but an invalid string ... - [no-invalid-this](rules-no-invalid-this.md): Under the strict mode,`this`keywords outside of classes or class-like objects might be`undefined`and raise a`Typ... - [no-irregular-whitespace](rules-no-irregular-whitespace.md): Invalid or irregular whitespace causes issues with ECMAScript 5 parsers and also makes code harder to debug in a simi... - [no-iterator](rules-no-iterator.md): The`__iterator__`property was a SpiderMonkey extension to JavaScript that could be used to create custom iterators ... - [no-label-var](rules-no-label-var.md): This rule aims to create clearer code by disallowing the bad practice of creating a label that shares a name with a v... - [no-labels](rules-no-labels.md): Labeled statements in JavaScript are used in conjunction with`break`and`continue`to control flow around multiple ... - [no-lone-blocks](rules-no-lone-blocks.md): In JavaScript, prior to ES6, standalone code blocks delimited by curly braces do not create a new scope and have no u... - [no-lonely-if](rules-no-lonely-if.md): If an`if`statement is the only statement in the`else`block, it is often clearer to use an`else if`form. - [no-loop-func](rules-no-loop-func.md): Writing functions within loops tends to result in errors due to the way the function creates a closure around the loo... - [no-loss-of-precision](rules-no-loss-of-precision.md): This rule would disallow the use of number literals that lose precision at runtime when converted to a JS`Number`du... - [no-magic-numbers](rules-no-magic-numbers.md): 'Magic numbers' are numbers that occur multiple times in code without an explicit meaning. - [no-misleading-character-class](rules-no-misleading-character-class.md): Unicode includes characters which are made by multiple code points. - [no-mixed-operators](rules-no-mixed-operators.md): Enclosing complex expressions by parentheses clarifies the developer's intention, which makes the code more readable. - [no-mixed-requires](rules-no-mixed-requires.md): In the Node.js community it is often customary to separate initializations with calls to`require`modules from other... - [no-mixed-spaces-and-tabs](rules-no-mixed-spaces-and-tabs.md): Most code conventions require either tabs or spaces be used for indentation. As such, it's usually an error if a sing... - [no-multi-assign](rules-no-multi-assign.md): Chaining the assignment of variables can lead to unexpected results and be difficult to read. - [no-multi-spaces](rules-no-multi-spaces.md): Multiple spaces in a row that are not used for indentation are typically mistakes. For example: - [no-multi-str](rules-no-multi-str.md): It's possible to create multiline strings in JavaScript by using a slash before a newline, such as: - [no-multiple-empty-lines](rules-no-multiple-empty-lines.md): Some developers prefer to have multiple blank lines removed, while others feel that it helps improve readability. Whi... - [no-native-reassign](rules-no-native-reassign.md): JavaScript environments contain a number of built-in global variables, such as`window`in browsers and`process`in ... - [no-negated-condition](rules-no-negated-condition.md): Negated conditions are more difficult to understand. Code can be made more readable by inverting the condition instead. - [no-negated-in-lhs](rules-no-negated-in-lhs.md): Just as developers might type`-a + b`when they mean`-(a + b)`for the negative of a sum, they might type`!key in ... - [no-nested-ternary](rules-no-nested-ternary.md): Nesting ternary expressions can make code more difficult to understand. - [no-new-func](rules-no-new-func.md): It's possible to create functions in JavaScript from strings at runtime using the`Function`constructor, such as: - [no-new-native-nonconstructor](rules-no-new-native-nonconstructor.md): It is a convention in JavaScript that global variables beginning with an uppercase letter typically represent classes... - [no-new-object](rules-no-new-object.md): The`Object`constructor is used to create new generic objects in JavaScript, such as: - [no-new-require](rules-no-new-require.md): The`require`function is used to include modules that exist in separate files, such as: - [no-new-symbol](rules-no-new-symbol.md): `Symbol`is not intended to be used with the`new`operator, but to be called as a function. - [no-new-wrappers](rules-no-new-wrappers.md): There are three primitive types in JavaScript that have wrapper objects: string, number, and boolean. These are repre... - [no-new](rules-no-new.md): The goal of using`new`with a constructor is typically to create an object of a particular type and store that objec... - [no-nonoctal-decimal-escape](rules-no-nonoctal-decimal-escape.md): Although not being specified in the language until ECMAScript 2021,`\8`and`\9`escape sequences in string literals... - [no-obj-calls](rules-no-obj-calls.md): ECMAScript provides several global objects that are intended to be used as-is. Some of these objects look as if they ... - [no-object-constructor](rules-no-object-constructor.md): Use of the`Object`constructor to construct a new empty object is generally discouraged in favor of object literal n... - [no-octal-escape](rules-no-octal-escape.md): As of the ECMAScript 5 specification, octal escape sequences in string literals are deprecated and should not be used... - [no-octal](rules-no-octal.md): Octal literals are numerals that begin with a leading zero, such as: - [no-param-reassign](rules-no-param-reassign.md): Assignment to variables declared as function parameters can be misleading and lead to confusing behavior, as modifyin... - [no-path-concat](rules-no-path-concat.md): In Node.js, the`__dirname`and`__filename`global variables contain the directory path and the file path of the cur... - [no-plusplus](rules-no-plusplus.md): Because the unary`++`and`--`operators are subject to automatic semicolon insertion, differences in whitespace can... - [no-process-env](rules-no-process-env.md): The`process.env`object in Node.js is used to store deployment/configuration parameters. Littering it through out a ... - [no-process-exit](rules-no-process-exit.md): The`process.exit()`method in Node.js is used to immediately stop the Node.js process and exit. This is a dangerous ... - [no-promise-executor-return](rules-no-promise-executor-return.md): The`new Promise`constructor accepts a single argument, called an *executor*. - [no-proto](rules-no-proto.md): `__proto__`property has been deprecated as of ECMAScript 3.1 and shouldn't be used in the code. Use`Object.getProto... - [no-prototype-builtins](rules-no-prototype-builtins.md): In ECMAScript 5.1,`Object.create`was added, which enables the creation of objects with a specified`[[Prototype]]`.... - [no-redeclare](rules-no-redeclare.md): In JavaScript, it's possible to redeclare the same variable name using`var`. This can lead to confusion as to where ... - [no-regex-spaces](rules-no-regex-spaces.md): Regular expressions can be very complex and difficult to understand, which is why it's important to keep them as simp... - [no-reserved-keys](rules-no-reserved-keys.md): Disallows unquoted reserved words as property names in object literals. - [no-restricted-exports](rules-no-restricted-exports.md): In a project, certain names may be disallowed from being used as exported names for various reasons. - [no-restricted-globals](rules-no-restricted-globals.md): Disallowing usage of specific global variables can be useful if you want to allow a set of global - [no-restricted-imports](rules-no-restricted-imports.md): Imports are an ES6/ES2015 standard for making the functionality of other modules available in your current module. In... - [no-restricted-modules](rules-no-restricted-modules.md): A module in Node.js is a simple or complex functionality organized in a JavaScript file which can be reused throughou... - [no-restricted-properties](rules-no-restricted-properties.md): Certain properties on objects may be disallowed in a codebase. This is useful for deprecating an API or restricting u... - [no-restricted-syntax](rules-no-restricted-syntax.md): JavaScript has a lot of language features, and not everyone likes all of them. As a result, some projects choose to d... - [no-return-assign](rules-no-return-assign.md): One of the interesting, and sometimes confusing, aspects of JavaScript is that assignment can happen at almost any po... - [no-return-await](rules-no-return-await.md): It is NOT recommended to use the`no-return-await`rule anymore because: - [no-script-url](rules-no-script-url.md): Using`javascript:`URLs is considered by some as a form of`eval`. Code passed in`javascript:`URLs has to be parse... - [no-self-assign](rules-no-self-assign.md): Self assignments have no effect, so probably those are an error due to incomplete refactoring. - [no-self-compare](rules-no-self-compare.md): Comparing a variable against itself is usually an error, either a typo or refactoring error. It is confusing to the r... - [no-sequences](rules-no-sequences.md): The comma operator includes multiple expressions where only one is expected. It evaluates each operand from left to r... - [no-setter-return](rules-no-setter-return.md): Setters cannot return values. - [no-shadow-restricted-names](rules-no-shadow-restricted-names.md): ES2020 §18.1 Value Properties of the Global Object (`globalThis`,`NaN`,`Infinity`,`undefined`) as well as strict m... - [no-shadow](rules-no-shadow.md): Shadowing is the process by which a local variable shares the same name as a variable in its containing scope. For ex... - [no-space-before-semi](rules-no-space-before-semi.md): Disallows spaces before semicolons. - [no-spaced-func](rules-no-spaced-func.md): While it's possible to have whitespace between the name of a function and the parentheses that execute it, such patte... - [no-sparse-arrays](rules-no-sparse-arrays.md): Sparse arrays contain empty slots, most frequently due to multiple commas being used in an array literal, such as: - [no-sync](rules-no-sync.md): In Node.js, most I/O is done through asynchronous methods. However, there are often synchronous versions of the async... - [no-tabs](rules-no-tabs.md): Some style guides don't allow the use of tab characters at all, including within comments. - [no-template-curly-in-string](rules-no-template-curly-in-string.md): ECMAScript 6 allows programmers to create strings containing variable or expressions using template literals, instead... - [no-ternary](rules-no-ternary.md): The ternary operator is used to conditionally assign a value to a variable. Some believe that the use of ternary oper... - [no-this-before-super](rules-no-this-before-super.md): In the constructor of derived classes, if`this`/`super`are used before`super()`calls, it raises a reference error. - [no-throw-literal](rules-no-throw-literal.md): It is considered good practice to only`throw`the`Error`object itself or an object using the`Error`object as bas... - [no-trailing-spaces](rules-no-trailing-spaces.md): Sometimes in the course of editing files, you can end up with extra whitespace at the end of lines. These whitespace ... - [no-unassigned-vars](rules-no-unassigned-vars.md): This rule flags`let`or`var`declarations that are never assigned a value but are still read or used in the code. S... - [no-undef-init](rules-no-undef-init.md): In JavaScript, a variable that is declared and not initialized to any value automatically gets the value of`undefine... - [no-undef](rules-no-undef.md): This rule can help you locate potential ReferenceErrors resulting from misspellings of variable and parameter names, ... - [no-undefined](rules-no-undefined.md): The`undefined`variable in JavaScript is actually a property of the global object. As such, in ECMAScript 3 it was p... - [no-underscore-dangle](rules-no-underscore-dangle.md): As far as naming conventions for identifiers go, dangling underscores may be the most polarizing in JavaScript. Dangl... - [no-unexpected-multiline](rules-no-unexpected-multiline.md): Semicolons are usually optional in JavaScript, because of automatic semicolon insertion (ASI). You can require or dis... - [no-unmodified-loop-condition](rules-no-unmodified-loop-condition.md): Variables in a loop condition often are modified in the loop. - [no-unneeded-ternary](rules-no-unneeded-ternary.md): It's a common mistake in JavaScript to use a conditional expression to select between two Boolean values instead of u... - [no-unreachable-loop](rules-no-unreachable-loop.md): A loop that can never reach the second iteration is a possible error in the code. - [no-unreachable](rules-no-unreachable.md): Because the`return`,`throw`,`continue`, and`break`statements unconditionally exit a block of code, any statement... - [no-unsafe-finally](rules-no-unsafe-finally.md): JavaScript suspends the control flow statements of`try`and`catch`blocks until the execution of`finally`block fi... - [no-unsafe-negation](rules-no-unsafe-negation.md): Just as developers might type`-a + b`when they mean`-(a + b)`for the negative of a sum, they might type`!key in ... - [no-unsafe-optional-chaining](rules-no-unsafe-optional-chaining.md): The optional chaining (`?.`) expression can short-circuit with a return value of`undefined`. Therefore, treating an ... - [no-unused-expressions](rules-no-unused-expressions.md): An unused expression which has no effect on the state of the program indicates a logic error. - [no-unused-labels](rules-no-unused-labels.md): Labels that are declared and not used anywhere in the code are most likely an error due to incomplete refactoring. - [no-unused-private-class-members](rules-no-unused-private-class-members.md): Private class members that are declared and not used anywhere in the code are most likely an error due to incomplete ... - [no-unused-vars](rules-no-unused-vars.md): Variables that are declared and not used anywhere in the code are most likely an error due to incomplete refactoring.... - [no-use-before-define](rules-no-use-before-define.md): In JavaScript, prior to ES6, variable and function declarations are hoisted to the top of a scope, so it's possible t... - [no-useless-assignment](rules-no-useless-assignment.md): [Wikipedia describes a "dead store"](https://en.wikipedia.org/wiki/Dead_store) as follows: - [no-useless-backreference](rules-no-useless-backreference.md): In JavaScript regular expressions, it's syntactically valid to define a backreference to a group that belongs to anot... - [no-useless-call](rules-no-useless-call.md): The function invocation can be written by`Function.prototype.call()`and`Function.prototype.apply()`. - [no-useless-catch](rules-no-useless-catch.md): A`catch`clause that only rethrows the original error is redundant, and has no effect on the runtime behavior of the... - [no-useless-computed-key](rules-no-useless-computed-key.md): It's unnecessary to use computed properties with literals such as: - [no-useless-concat](rules-no-useless-concat.md): It's unnecessary to concatenate two strings together, such as: - [no-useless-constructor](rules-no-useless-constructor.md): ES2015 provides a default class constructor if one is not specified. As such, it is unnecessary to provide an empty c... - [no-useless-escape](rules-no-useless-escape.md): Escaping non-special characters in strings, template literals, and regular expressions doesn't have any effect, as de... - [no-useless-rename](rules-no-useless-rename.md): ES2015 allows for the renaming of references in import and export statements as well as destructuring assignments. Th... - [no-useless-return](rules-no-useless-return.md): A`return;`statement with nothing after it is redundant, and has no effect on the runtime behavior of a function. Th... - [no-var](rules-no-var.md): ECMAScript 6 allows programmers to create variables with block scope instead of function scope using the`let` - [no-void](rules-no-void.md): The`void`operator takes an operand and returns`undefined`:`void expression`will evaluate`expression`and return... - [no-warning-comments](rules-no-warning-comments.md): Developers often add comments to code which is not complete or needs review. Most likely you want to fix or review th... - [no-whitespace-before-property](rules-no-whitespace-before-property.md): JavaScript allows whitespace between objects and their properties. However, inconsistent spacing can make code harder... - [no-with](rules-no-with.md): The`with`statement is potentially problematic because it adds members of an object to the current scope, making it ... - [no-wrap-func](rules-no-wrap-func.md): Disallows unnecessary parentheses around function expressions. - [nonblock-statement-body-position](rules-nonblock-statement-body-position.md): When writing`if`,`else`,`while`,`do-while`, and`for`statements, the body can be a single statement instead of a... - [object-curly-newline](rules-object-curly-newline.md): A number of style guides require or disallow line breaks inside of object braces and other tokens. - [object-curly-spacing](rules-object-curly-spacing.md): While formatting preferences are very personal, a number of style guides require - [object-property-newline](rules-object-property-newline.md): This rule permits you to restrict the locations of property specifications in object literals. You may prohibit any p... - [object-shorthand](rules-object-shorthand.md): ECMAScript 6 provides a concise form for defining object literal methods and properties. This - [one-var-declaration-per-line](rules-one-var-declaration-per-line.md): Some developers declare multiple var statements on the same line: - [one-var](rules-one-var.md): Variables can be declared at any point in JavaScript code using`var`,`let`,`const`,`using`, or`await using`. The... - [operator-assignment](rules-operator-assignment.md): JavaScript provides shorthand operators that combine variable assignment and some simple mathematical operations. For... - [operator-linebreak](rules-operator-linebreak.md): When a statement is too long to fit on a single line, line breaks are generally inserted next to the operators separa... - [padded-blocks](rules-padded-blocks.md): Some style guides require block statements to start and end with blank lines. The goal is - [padding-line-between-statements](rules-padding-line-between-statements.md): This rule requires or disallows blank lines between the given 2 kinds of statements. - [prefer-arrow-callback](rules-prefer-arrow-callback.md): Arrow functions can be an attractive alternative to function expressions for callbacks or function arguments. - [prefer-const](rules-prefer-const.md): If a variable is never reassigned, using the`const`declaration is better. - [prefer-destructuring](rules-prefer-destructuring.md): With JavaScript ES6, a new syntax was added for creating variables from an array index or object property, called [de... - [prefer-exponentiation-operator](rules-prefer-exponentiation-operator.md): Introduced in ES2016, the infix exponentiation operator`**`is an alternative for the standard`Math.pow`function. - [prefer-named-capture-group](rules-prefer-named-capture-group.md): With the landing of ECMAScript 2018, named capture groups can be used in regular expressions, which can improve their... - [prefer-numeric-literals](rules-prefer-numeric-literals.md): The`parseInt()`and`Number.parseInt()`functions can be used to turn binary, octal, and hexadecimal strings into in... - [prefer-object-has-own](rules-prefer-object-has-own.md): It is very common to write code like: - [prefer-object-spread](rules-prefer-object-spread.md): When`Object.assign`is called using an object literal as the first argument, this rule requires using the object spr... - [prefer-promise-reject-errors](rules-prefer-promise-reject-errors.md): It is considered good practice to only pass instances of the built-in`Error`object to the`reject()`function for u... - [prefer-reflect](rules-prefer-reflect.md): The original intent of this rule now seems misguided as we have come to understand that`Reflect`methods are not act... - [prefer-regex-literals](rules-prefer-regex-literals.md): There are two ways to create a regular expression: - [prefer-rest-params](rules-prefer-rest-params.md): There are rest parameters in ES2015. - [prefer-spread](rules-prefer-spread.md): Before ES2015, one must use`Function.prototype.apply()`to call variadic functions. - [prefer-template](rules-prefer-template.md): In ES2015 (ES6), we can use template literals instead of string concatenation. - [preserve-caught-error](rules-preserve-caught-error.md): JavaScript developers often re-throw errors in`catch`blocks to add context but forget to preserve the original erro... - [quote-props](rules-quote-props.md): Object literal property names can be defined in two ways: using literals or using strings. For example, these two obj... - [quotes](rules-quotes.md): JavaScript allows you to define strings in one of three ways: double quotes, single quotes, and backticks (as of ECMA... - [radix](rules-radix.md): When using the`parseInt()`function it is common to omit the second argument, the radix, and let the function try to... - [require-atomic-updates](rules-require-atomic-updates.md): When writing asynchronous code, it is possible to create subtle race condition bugs. Consider the following example: - [require-await](rules-require-await.md): Asynchronous functions in JavaScript behave differently than other functions in two important ways: - [require-jsdoc](rules-require-jsdoc.md): :::important - [require-unicode-regexp](rules-require-unicode-regexp.md): RegExp`u`flag has two effects: - [require-yield](rules-require-yield.md): This rule generates warnings for generator functions that do not have the`yield`keyword. - [rest-spread-spacing](rules-rest-spread-spacing.md): ES2015 introduced the rest and spread operators, which expand an iterable structure into its individual parts. Some e... - [semi-spacing](rules-semi-spacing.md): JavaScript allows you to place unnecessary spaces before or after a semicolon. - [semi-style](rules-semi-style.md): Generally, semicolons are at the end of lines. However, in semicolon-less style, semicolons are at the beginning of l... - [semi](rules-semi.md): JavaScript doesn't require semicolons at the end of each statement. In many cases, the JavaScript engine can determin... - [sort-imports](rules-sort-imports.md): The`import`statement is used to import members (functions, objects or primitives) that have been exported from an e... - [sort-keys](rules-sort-keys.md): When declaring multiple properties, some developers prefer to sort property names alphabetically to more easily find ... - [sort-vars](rules-sort-vars.md): When declaring multiple variables within the same block, some developers prefer to sort variable names alphabetically... - [space-after-function-name](rules-space-after-function-name.md): Enforces consistent spacing after name in function definitions. - [space-after-keywords](rules-space-after-keywords.md): Enforces consistent spacing after keywords. - [space-before-blocks](rules-space-before-blocks.md): Consistency is an important part of any style guide. - [space-before-function-paren](rules-space-before-function-paren.md): When formatting a function, whitespace is allowed between the function name or`function`keyword and the opening par... - [space-before-function-parentheses](rules-space-before-function-parentheses.md): Enforces consistent spacing before opening parenthesis in function definitions. - [space-before-keywords](rules-space-before-keywords.md): Enforces consistent spacing before keywords. - [space-in-brackets](rules-space-in-brackets.md): Enforces consistent spacing inside braces of object literals and brackets of array literals. - [space-in-parens](rules-space-in-parens.md): Some style guides require or disallow spaces inside of parentheses: - [space-infix-ops](rules-space-infix-ops.md): While formatting preferences are very personal, a number of style guides require spaces around operators, such as: - [space-return-throw-case](rules-space-return-throw-case.md): Requires spaces after`return`,`throw`, and`case`keywords. - [space-unary-ops](rules-space-unary-ops.md): Some style guides require or disallow spaces before or after unary operators. This is mainly a stylistic issue, howev... - [space-unary-word-ops](rules-space-unary-word-ops.md): Requires spaces after unary word operators. - [spaced-comment](rules-spaced-comment.md): Some style guides require or disallow a whitespace immediately after the initial`//`or`/*`of a comment. - [spaced-line-comment](rules-spaced-line-comment.md): Enforces consistent spacing after`//`in line comments. - [strict](rules-strict.md): A strict mode directive is a`"use strict"`literal at the beginning of a script or function body. It enables strict ... - [switch-colon-spacing](rules-switch-colon-spacing.md): Spacing around colons improves readability of`case`/`default`clauses. - [symbol-description](rules-symbol-description.md): The`Symbol`function may have an optional description: - [template-curly-spacing](rules-template-curly-spacing.md): We can embed expressions in template strings with using a pair of`${`and`}`. - [template-tag-spacing](rules-template-tag-spacing.md): With ES6, it's possible to create functions called tagged template literals where the function pa... - [unicode-bom](rules-unicode-bom.md): The Unicode Byte Order Mark (BOM) is used to specify whether code units are big - [use-isnan](rules-use-isnan.md): In JavaScript,`NaN`is a special value of the`Number`type. It's used to represent any of the "not-a-number" values... - [valid-jsdoc](rules-valid-jsdoc.md): :::important - [valid-typeof](rules-valid-typeof.md): For a vast majority of use cases, the result of the`typeof`operator is one of the following string literals:`"unde... - [vars-on-top](rules-vars-on-top.md): The`vars-on-top`rule generates warnings when variable declarations are not used serially at the top of a function s... - [wrap-iife](rules-wrap-iife.md): You can immediately invoke function expressions, but not function declarations. A common technique to create an immed... - [wrap-regex](rules-wrap-regex.md): When a regular expression is used in certain situations, it can end up looking like a division operator. For example: - [yield-star-spacing](rules-yield-star-spacing.md): This rule enforces spacing around the`*`in`yield*`expressions. - [yoda](rules-yoda.md): Yoda conditions are so named because the literal value of the condition comes first while the variable comes second. ... - [Command Line Interface Reference](use-command-line-interface.md): {%- from 'components/npm_tabs.macro.html' import npm_tabs with context %} - [Combine Configs](use-configure-combine-configs.md): In many cases, you won't write an ESLint config file from scratch, but rather, you'll use a combination of predefined... - [Configuration Files (Deprecated)](use-configure-configuration-files-deprecated.md): ::: warning - [Configuration Files](use-configure-configuration-files.md): {%- from 'components/npx_tabs.macro.html' import npx_tabs %} - [Debug Your Configuration](use-configure-debug.md): {%- from 'components/npx_tabs.macro.html' import npx_tabs %} - [Ignore Files (Deprecated)](use-configure-ignore-deprecated.md): ::: warning - [Ignore Files](use-configure-ignore.md): {%- from 'components/npx_tabs.macro.html' import npx_tabs %} - [Configure ESLint](use-configure.md): ESLint is designed to be flexible and configurable for your use case. You can turn off every rule and run only with b... - [Configure Language Options (Deprecated)](use-configure-language-options-deprecated.md): ::: warning - [Configure Language Options](use-configure-language-options.md): ::: tip - [Configuration Migration Guide](use-configure-migration-guide.md): {%- from 'components/npm_tabs.macro.html' import npm_tabs with context %} - [Configure a Parser (Deprecated)](use-configure-parser-deprecated.md): ::: warning - [Configure a Parser](use-configure-parser.md): ::: tip - [Configure Plugins (Deprecated)](use-configure-plugins-deprecated.md): ::: warning - [Configure Plugins](use-configure-plugins.md): ::: tip - [Configure Rules (Deprecated)](use-configure-rules-deprecated.md): ::: warning - [Configure Rules](use-configure-rules.md): ::: tip - [Glossary](use-core-concepts-glossary.md): This page serves as a reference for common terms associated with ESLint. - [Core Concepts](use-core-concepts.md): This page contains a high-level overview of some of the core concepts of ESLint. - [Formatters Reference](use-formatters.md): ESLint comes with several built-in formatters to control the appearance of the linting results, and supports third-pa... - [Getting Started with ESLint](use-getting-started.md): {%- from 'components/npm_tabs.macro.html' import npm_tabs with context %} - [Use ESLint in Your Project](use.md): This guide is intended for those who wish to use ESLint as an end-user. If you're looking for how to extend ESLint or... - [Integrations](use-integrations.md): This page contains community projects that have integrated ESLint. The projects on this page are not maintained by th... - [MCP Server Setup](use-mcp.md): [Model Context Protocol](https://modelcontextprotocol.io) (MCP) is an open standard that enables AI models to interac... - [Migrate to v10.x](use-migrate-to-1000.md): ESLint v10.0.0 is a major release of ESLint, and as such, has several breaking changes that you need to be aware of. ... - [Migrate to v8.0.0](use-migrate-to-800.md): ESLint v8.0.0 is a major release of ESLint. We have made a few breaking changes in this release. This guide is intend... - [Migrate to v9.x](use-migrate-to-900.md): ESLint v9.0.0 is a major release of ESLint, and as such, has several breaking changes that you need to be aware of. T... - [Migrating from JSCS](use-migrating-from-jscs.md): {%- from 'components/npm_tabs.macro.html' import npm_tabs with context %} - [Migrating to v1.0.0](use-migrating-to-100.md): ESLint v1.0.0 is the first major version release. As a result, there are some significant changes between how ESLint ... - [Migrating to v2.0.0](use-migrating-to-200.md): ESLint v2.0.0 is the second major version release. As a result, there are some significant changes between how ESLint... - [Migrating to v3.0.0](use-migrating-to-300.md): ESLint v3.0.0 is the third major version release. We have made several breaking changes in this release, however, we ... - [Migrating to v4.0.0](use-migrating-to-400.md): ESLint v4.0.0 is the fourth major version release. We have made several breaking changes in this release; however, we... - [Migrating to v5.0.0](use-migrating-to-500.md): ESLint v5.0.0 is the fifth major version release. We have made a few breaking changes in this release, but we expect ... - [Migrating to v6.0.0](use-migrating-to-600.md): ESLint v6.0.0 is a major release of ESLint. We have made a few breaking changes in this release. This guide is intend... - [Migrating to v7.0.0](use-migrating-to-700.md): ESLint v7.0.0 is a major release of ESLint. We have made a few breaking changes in this release. This guide is intend... - [Rule Deprecation](use-rule-deprecation.md): Balancing the trade-offs of improving a tool and the frustration these changes can cause is a difficult task. One key... - [Bulk Suppressions](use-suppressions.md): Enabling a new lint rule as`"error"`can be challenging when the codebase has many violations and the rule isn't aut... - [Circular fixes detected …](use-troubleshooting-circular-fixes.md): When running ESLint with the`--fix`option, you may see the following warning: - [ESLint couldn't determine the plugin … uniquely](use-troubleshooting-couldnt-determine-the-plugin-uniquely.md): When using the [legacy ESLint config system](../configure/configuration-files-deprecated), you may see this error run... - [ESLint couldn't find the config … to extend from](use-troubleshooting-couldnt-find-the-config.md): When using the [legacy ESLint config system](../configure/configuration-files-deprecated), you may see this error run... - [ESLint couldn't find the plugin …](use-troubleshooting-couldnt-find-the-plugin.md): When using the [legacy ESLint config system](../configure/configuration-files-deprecated), you may see this error run... - [Troubleshooting](use-troubleshooting.md): This page serves as a reference for common issues working with ESLint. - [TypeError: context.getScope is not a function](use-troubleshooting-v9-rule-api-changes.md): When using ESLint v9.0.0 or later with a plugin, you may see one of the following errors: - [Version Support](use-version-support.md): eleventyNavigation: