Configurations
ESLint shareable configurations exist to provide a comprehensive base config for you, with the intention that you add the config and it gives you an opinionated setup.
Built-In Configurations
@typescript-eslint/eslint-plugin
includes built-in configurations you can extend from to pull in the recommended starting rules.
With the exception of strict
, all configurations are considered "stable".
Rule additions and removals are treated as breaking changes and will only be done in major version bumps.
We recommend most packages extend from recommended-requiring-type-checking
(which requires typed linting).
eslint-recommended
This ruleset is meant to be used after extending eslint:recommended
.
It disables core ESLint rules that are already checked by the TypeScript compiler.
Additionally, it enables rules that promote using the more modern constructs TypeScript allows for.
{
"extends": [
"eslint:recommended",
"plugin:@typescript-eslint/eslint-recommended"
]
}
This config is automatically included if you use any of the other configurations mentioned on this page.
recommended
Recommended rules for code correctness that you can drop in without additional configuration.
These rules are those whose reports are almost always for a bad practice and/or likely bug.
recommended
also disables rules known to conflict with this repository, or cause issues in TypeScript codebases.
{
"extends": ["plugin:@typescript-eslint/recommended"]
}
We strongly recommend all TypeScript projects extend from this configuration.
recommended-requiring-type-checking
Additional recommended rules that require type information.
Rules in this configuration are similarly useful to those in recommended
.
{
"extends": [
"plugin:@typescript-eslint/recommended",
"plugin:@typescript-eslint/recommended-requiring-type-checking"
]
}
We recommend all TypeScript projects extend from this configuration, with the caveat that rules using type information take longer to run. See Linting with Type Information for more details.
strict
Additional strict rules that can also catch bugs but are more opinionated than recommended rules.
{
"extends": [
"plugin:@typescript-eslint/recommended",
"plugin:@typescript-eslint/recommended-requiring-type-checking",
"plugin:@typescript-eslint/strict"
]
}
We recommend a TypeScript project extend from this configuration only if a nontrivial percentage of its developers are highly proficient in TypeScript.
Overriding Configurations
These configurations are our recommended starting points, but you don't need to use them as-is. ESLint allows you to configure your own rule settings on top of any extended configurations. See ESLint's Configuring Rules docs.
Suggesting Configuration Changes
If you feel strongly that a specific rule should (or should not) be one of these configurations, please file an issue along with a detailed argument explaining your reasoning.
Prettier
If you use prettier
, there is also a helpful config to help ensure ESLint doesn't report on formatting issues that prettier will fix: eslint-config-prettier
.
Using this config by adding it to the end of your extends
:
module.exports = {
root: true,
parser: '@typescript-eslint/parser',
plugins: ['@typescript-eslint'],
extends: [
'eslint:recommended',
'plugin:@typescript-eslint/recommended',
'prettier',
],
};
We strongly recommend you use Prettier or an equivalent, not ESLint formatting rules. See this issue for more information.