Awesome ESLint

A list of awesome ESLint configs, plugins, etc.
If you want to contribute, please read the contribution guidelines.
Contents
Configs
Configs by Well-Known Companies/Organizations
Other Prominent Configs (100 stars or so)
Other Configs
-
Adjunct
- A reasonable collection of plugins to use alongside your main ESLint configuration.
-
Ash-Nazg
- One config to rule them all!
-
Cecilia
- ESLint configuration for awesome projects.
-
clean-typescript
- Enforce classic JavaScript featuress in TypeScript codebase by banning excessive keywords.
-
ES
- Shareable config for very strict code.
-
Hardcore
- The most strict (but practical) ESLint config out there.
-
Problems
- Shareable config that only catches actual problems, and doesn’t enforce stylistic preferences.
-
Supermind
- Shareable config for Supermind style.
-
Sheriff
- Comprehensive and highly opinionated Eslint configuration. Typescript oriented.
Plugins
Code Quality
Compatibility
-
Compat
- Lint browser compatibility of APIs used (caniuse as an ESLint plugin).
-
ecmascript-compat
- Disable ECMAScript language features not supported by your browserslist targets.
-
es-x
- Disable specific ECMAScript language versions or individual features. Properly maintained fork of no longer maintained eslint-plugin-es
.
-
es5
- ESLint plugin for ES5 users (forbid ES2015+ usage).
-
ie11
- Detect unsupported ES6 features in IE11.
CSS in JS
-
CSS-modules
- Lint undefined or unused rules for css modules.
-
Emotion
- ESLint rules for emotion.
- Styled Components
Deprecation
-
deprecate
- Mark functions or modules as deprecated and get lint messages when they are used.
-
deprecation
- Identifies use of
jsdoc @deprecated
functions.
-
disable
- Disable specified plugins using file path patterns and inline comments.
Embedded
-
HTML
- Linting for JavaScript inside of HTML <script>
tags.
-
Markdown
- Linting for JavaScript inside of Markdown.
Frameworks
Languages and Environments
-
AssemblyScript - Rules for enforcing restrictions on TypeScript toward AssemblyScript compliance.
-
Babel
- Adds replacements for built-in rules to include Babel features.
-
Coffee
- Enables linting CoffeeScript files with, with optional linting rules from the Coffeelint library.
-
eslint-plugin-eslint-plugin
- An ESLint plugin for linting ESLint plugins.
- Flow
-
Flow
- Flow type linting rules.
-
Flow Errors
- Run Flow as an ESLint plugin.
-
HTML
- ESLint plugin for HTML.
- JSON
-
JSON
- Lint your JSON files.
-
JSON, package.json
- Lint, format, and auto-fix your JSON files. Sort your package.json
.
-
JSON with Comments
- ESLint plugin for JSON, JSONC and JSON5.
-
JSON Schema
- Validates data defined in JavaScript, JSON, YAML and TOML using JSON Schema Validator.
-
MDX
- ESLint Parser/Plugin for MDX.
-
N
- Additional ESLint’s rules for Node.js. Properly maintained fork of no longer maintained eslint-plugin-node
.
-
SQL
- SQL linting rules for ESLint.
-
TOML
- ESLint plugin for TOML.
-
TypeScript
- Linting rules for TypeScript.
-
YAML
- ESLint plugin for YAML.
Libraries
- GraphQL
-
TypeGraphQL
- Linting rules for TypeGraphQL, targeted at finding common mistakes.
-
jQuery
- Linting rules for jQuery, including versioned configs for deprecated features.
-
JSDoc
- Linting rules for JSDoc comments (including the JavaScript within @example
).
- Lodash
-
Mongodb
- Mongodb native Node.js driver linting rules.
-
Ramda
- Ramda specific linting rules.
-
RequireJS
- Linting rules for RequireJS.
-
Tailwind CSS
- Linting rules for Tailwind CSS classnames.
Misc
-
Diff
- Run ESLint on your changed lines only. Also supports CI!
-
Misc
- Miscellaneous rules including rules for creating custom checks and wrapping (modifying) third-party rules.
-
Notice
- An eslint rule that checks the top of files and fixes them too!
-
Only-Error
- Convert all rules to errors.
-
Only-Warn
- Convert all rules to warnings.
-
PutOut
- an ESLint plugin integrates putout
linter into ESLint.
-
TypeLint
- Introduces types, based on existing schemas (Swagger, Redux) and linting access to object properties, preventing undefined
errors.
-
Woke
- Helps catch insensitive words, promoting an inclusive codebase.
Practices and Specific ES Features
-
array-func
- Avoid redundancy when using es2015 array methods and functions.
-
arrow functions
- ESLint rules to ensure proper arrow function definitions.
-
boundaries
- Ensures that your architecture boundaries are respected by the elements in your project checking file structure and dependencies.
-
@eslint-community/eslint-plugin-eslint-comments
- Best practices about ESLint directive comments (/*eslint-disable*/
, etc.). Properly maintained fork of no longer maintained eslint-plugin-eslint-comments
.
-
eslint-plugin-hexagonal-architecture
- A plugin that helps you to enforce hexagonal architecture best practices.
-
eslint-plugin-write-good-comments
- Enforce good writing style in comments.
-
eslint-plugin-exception-handling
- Lints unhandled functions that might throw errors.
-
fp
- ESLint rules for functional programming.
-
functional
- ESLint rules to disable mutation and promote fp in JavaScript and TypeScript.
-
Immutable
- Disable all mutation in JavaScript.
-
import
- Linting of ES2015+ import/export syntax, and prevent issues with misspelling of file paths and import names. Still does not work with ESlint 9 and does not support flat configs.
-
import-x
- Linting of ES2015+ import/export syntax, and prevent issues with misspelling of file paths and import names. Properly maintained lightweight fork of eslint-plugin-import
with the proper support of latest ESlint.
-
new-with-error
- Require errors to be thrown using new
.
-
no-argument-spread
- Lints against expressions like Math.max(...args)
that can lead to a stack overflow for large arrays.
-
no-comments
- Prevents leaking comments into production if bundler is not used and stops developers from commenting out old lines of code.
-
no-constructor-bind
- Encourages use of class properties by reporting use of this
with bind
or setting state in constructors.
-
no-inferred-method-name
- Custom rule for ESLint that checks for inferred method names within object literals.
-
no-loops
- It’s 2019 and you still use loops?
-
no-restricted-syntax
- Show queried syntax’s content in messages.
-
no-use-extend-native
- Prevent using extended native objects.
-
Promise
- Best practices when working with promises.
-
pure
- Enforce pure functions (without side effects).
-
ReDoS - ESLint plugin for finding possible ReDoS vulnerabilities.
-
ReDoSDetector
- ESLint plugin for finding possible ReDoS vulnerabilities.
-
RegExp
- ESLint plugin for finding regexp mistakes and style guide violations.
-
sort-keys-fix
- Adds fixer for ESLint sort-keys
rule.
-
this
- Write pure functions, don’t allow this
.
-
toplevel
- An eslint plugin for disallow side effect at module toplevel.
Security
-
no-secrets
- An eslint plugin that detects potential secrets/credentials.
-
no-unsanitized
- Checks for innerHTML
, outerHTML
, etc.
-
pii
- Checks and enforces PII Compliance of the code. i.e. no email address, birth date, IP address or phone number in comments or string literals.
- ScanJS config
and plugin
- Security-related rules.
-
Security
- ESLint rules for Node Security.
-
xss
- Tries to detect XSS issues in codebase before they end up in production.
Style
Parsers
-
babel-eslint-parser
- Allows you to lint ALL valid Babel code with the fantastic ESLint.
-
TypeScript
- A TypeScript parser that produces output compatible with ESLint.
-
BrightScript
- BrightScript plugin for Roku development. Includes Parser and Rules.
-
GraphQL
- Parser for the GraphQL AST. Includes parser, plugin, processor (for non-graphql files) and rules.
-
html
- A enhanced ESLint formatter.
-
badger
- Make SVG-based badges summarizing ESLint results (e.g., for use on a README).
-
git-log
- ESLint Formatter featuring Git Author, Date, and Hash.
-
github
- See ESLint errors and warnings directly in pull requests.
-
gitlab - Output ESLint results in the GitLab code quality results.
-
mo
- Good-lookin’ ESLint formatter and also for delightful reading experience.
-
SARIF - Generate a results in a SARIF format so it can be imported into tools like GitHub Advanced Security.
-
summary-chart
- Format ESLint output into a bar chart.
Globals
-
eslint-define-config
- Provide a defineConfig
function for .eslintrc.js
files.
-
es-file-traverse
- Obtain a list of only those files which are in use based on imports and/or requires from an entry file or files; list passable to ESLint. Intended esp. for linting 3rd party dependencies.
-
eslint-find-rules
- Find built-in ESLint rules you don’t have in your custom config.
-
eslint-index
- CLI for finding and managing rules in ESLint config files.
-
eslint-interactive
- The CLI tool to fix huge number of ESLint errors.
-
eslint-multiplexer
- Multiplex eslint results and merge results for common files.
-
eslint-nibble
- Ease into ESLint, by fixing one rule at a time.
-
eslint-plugin-rule-adoption
- An eslint plugin for incremental rule adoption, when --fix
and codemods don’t cut it.
-
eslint-rule-documentation
- Find the url for the documentation of an ESLint rule.
-
eslint-watch
- Run ESLint with watch mode.
-
codacy-eslint
- Docker used at Codacy to run ESLint.
-
esprint
- Run ESLint across multiple threads.
-
generator-eslint
- Generate ESLint
plugin and rules with Yeoman.
-
editor-info
- Detect whether one is within an editor/IDE and which type, allowing one to tweak ESLint configuration accordingly.
-
eslint-dashboard
- Interactive ESLint workflow that lives in your terminal.
-
eslint-remote-tester
- CLI tool for testing given ESlint rules against multiple repositories at once.
Developing for ESLint
-
eslint-doc-generator
- Generate documentation for your ESLint plugin including a rules table for your readme and header for your rule docs.
-
eslint-docgen
- Automatically generate ESLint plugin documentation from rule metadata and test cases.
Tutorials
Installation and Setup
-
Lintier
- CLI to quickly scaffold an ESLint & Prettier setup in a TypeScript project.