837 lines
35 KiB
HTML
837 lines
35 KiB
HTML
<h1 id="awesome-eslint-awesome">Awesome ESLint <a
|
||
href="https://awesome.re"><img src="https://awesome.re/badge.svg"
|
||
alt="Awesome" /></a></h1>
|
||
<p><a
|
||
href="http://eslint.org"><img src="https://eslint.org/icon.svg" width="160" align="right" alt="eslint"></a></p>
|
||
<blockquote>
|
||
<p>A list of awesome ESLint configs, plugins, etc.</p>
|
||
</blockquote>
|
||
<p>If you want to contribute, please read the <a
|
||
href="contributing.md">contribution guidelines</a>.</p>
|
||
<h2 id="contents">Contents</h2>
|
||
<ul>
|
||
<li><a href="#configs">Configs</a>
|
||
<ul>
|
||
<li><a href="#configs-by-well-known-companiesorganizations">Configs by
|
||
Well-Known Companies/Organizations</a></li>
|
||
<li><a href="#other-prominent-configs-100-stars-or-so">Other Prominent
|
||
Configs (100 stars or so)</a></li>
|
||
<li><a href="#other-configs">Other Configs</a></li>
|
||
</ul></li>
|
||
<li><a href="#preconfigured-configs-with-eslint-set-up">Preconfigured
|
||
Configs with ESLint Set up</a></li>
|
||
<li><a href="#plugins">Plugins</a>
|
||
<ul>
|
||
<li><a href="#code-quality">Code Quality</a></li>
|
||
<li><a href="#compatibility">Compatibility</a></li>
|
||
<li><a href="#css-in-js">CSS in JS</a></li>
|
||
<li><a href="#deprecation">Deprecation</a></li>
|
||
<li><a href="#embedded">Embedded</a></li>
|
||
<li><a href="#frameworks">Frameworks</a></li>
|
||
<li><a href="#languages-and-environments">Languages and
|
||
Environments</a></li>
|
||
<li><a href="#libraries">Libraries</a></li>
|
||
<li><a href="#misc">Misc</a></li>
|
||
<li><a href="#practices-and-specific-es-features">Practices and Specific
|
||
ES Features</a></li>
|
||
<li><a href="#performance">Performance</a></li>
|
||
<li><a href="#security">Security</a></li>
|
||
<li><a href="#style">Style</a></li>
|
||
<li><a href="#testing-tools">Testing Tools</a></li>
|
||
</ul></li>
|
||
<li><a href="#parsers">Parsers</a></li>
|
||
<li><a href="#formatters">Formatters</a></li>
|
||
<li><a href="#globals">Globals</a></li>
|
||
<li><a href="#tools">Tools</a></li>
|
||
<li><a href="#developing-for-eslint">Developing for ESLint</a></li>
|
||
<li><a href="#tutorials">Tutorials</a></li>
|
||
<li><a href="#installation-and-setup">Installation and Setup</a></li>
|
||
</ul>
|
||
<h2 id="configs">Configs</h2>
|
||
<h3 id="configs-by-well-known-companiesorganizations">Configs by
|
||
Well-Known Companies/Organizations</h3>
|
||
<ul>
|
||
<li><a
|
||
href="https://github.com/airbnb/javascript/tree/master/packages/eslint-config-airbnb">Airbnb</a>
|
||
- Shareable config for <a
|
||
href="https://github.com/airbnb/javascript">Airbnb’s style
|
||
guide</a>.</li>
|
||
<li><a
|
||
href="https://github.com/davidjbradshaw/eslint-config-airbnb-babel">Airbnb-babel</a>
|
||
- Airbnb’s ESLint config with Babel Support.</li>
|
||
<li><a href="https://github.com/AlloyTeam/eslint-config-alloy">Alloy</a>
|
||
- Progressive ESLint config for your React/Vue/TypeScript projects.</li>
|
||
<li><a
|
||
href="https://github.com/eslint/eslint/tree/master/packages/eslint-config-eslint">ESLint</a>
|
||
- Contains the ESLint configuration used for projects maintained by the
|
||
ESLint team.</li>
|
||
<li><a
|
||
href="https://www.npmjs.com/package/eslint-config-fbjs">Facebook</a> -
|
||
Sharable config for Facebook’s style guide.</li>
|
||
<li><a
|
||
href="https://github.com/feedzai/eslint-config-feedzai">Feedzai</a> -
|
||
Feedzai’s shareable config for JavaScript/React projects.</li>
|
||
<li><a
|
||
href="https://github.com/Shopify/web-foundation/blob/main/packages/eslint-plugin/README.md">Shopify</a>
|
||
- Shareable config for <a
|
||
href="https://github.com/Shopify/javascript">Shopify’s style
|
||
guide</a>.</li>
|
||
<li><a
|
||
href="https://github.com/wikimedia/eslint-config-wikimedia">Wikimedia</a>
|
||
- Shareable config for <a
|
||
href="https://www.mediawiki.org/wiki/Manual:Coding_conventions/JavaScript">Wikimedia’s
|
||
style guide</a>, used by <a
|
||
href="https://www.mediawiki.org/">MediaWiki</a>.</li>
|
||
</ul>
|
||
<h3 id="other-prominent-configs-100-stars-or-so">Other Prominent Configs
|
||
(100 stars or so)</h3>
|
||
<ul>
|
||
<li><a
|
||
href="https://github.com/davidjbradshaw/eslint-config-auto">Auto</a> -
|
||
Automatically configure ESLint based on your project’s
|
||
dependencies.</li>
|
||
<li><a
|
||
href="https://github.com/gajus/eslint-config-canonical">Canonical</a> -
|
||
Shareable config for <a
|
||
href="https://github.com/gajus/canonical">Canonical style guide</a>.
|
||
<!-- lint disable double-link --></li>
|
||
<li><a
|
||
href="https://github.com/feross/eslint-config-standard">Standard</a> -
|
||
Shareable config for JavaScript <a
|
||
href="https://github.com/feross/standard">Standard Style</a>.</li>
|
||
<li><a href="https://github.com/xojs/eslint-config-xo">XO</a> -
|
||
Shareable config for <a href="https://github.com/xojs/xo">XO</a>.</li>
|
||
<li><a href="https://github.com/antfu/eslint-config">Antfu Eslint
|
||
Config</a> - Anthony’s ESLint config preset.</li>
|
||
</ul>
|
||
<h3 id="other-configs">Other Configs</h3>
|
||
<ul>
|
||
<li><a
|
||
href="https://github.com/davidjbradshaw/eslint-config-adjunct">Adjunct</a>
|
||
- A reasonable collection of plugins to use alongside your main ESLint
|
||
configuration.</li>
|
||
<li><a
|
||
href="https://github.com/brettz9/eslint-config-ash-nazg">Ash-Nazg</a> -
|
||
One config to rule them all!</li>
|
||
<li><a
|
||
href="https://github.com/SandroMiguel/eslint-config-cecilia">Cecilia</a>
|
||
- ESLint configuration for awesome projects.</li>
|
||
<li><a
|
||
href="https://github.com/cunarist/eslint-config-clean-typescript">clean-typescript</a>
|
||
- Enforce classic JavaScript featuress in TypeScript codebase by banning
|
||
excessive keywords.</li>
|
||
<li><a
|
||
href="https://github.com/EvgenyOrekhov/eslint-config-hardcore">Hardcore</a>
|
||
- The most strict (but practical) ESLint config out there.</li>
|
||
<li><a
|
||
href="https://github.com/RyanZim/eslint-config-problems">Problems</a> -
|
||
Shareable config that only catches actual problems, and doesn’t enforce
|
||
stylistic preferences.</li>
|
||
<li><a
|
||
href="https://github.com/supermind/eslint-config-supermind">Supermind</a>
|
||
- Shareable config for Supermind style.</li>
|
||
<li><a href="https://github.com/AndreaPontrandolfo/sheriff">Sheriff</a>
|
||
- Comprehensive and highly opinionated Eslint configuration. Typescript
|
||
oriented.</li>
|
||
</ul>
|
||
<h2 id="preconfigured-configs-with-eslint-set-up">Preconfigured Configs
|
||
with ESLint Set up</h2>
|
||
<ul>
|
||
<li><a href="https://github.com/geek/node-style">Node.js Standard
|
||
Style</a> - Node.js core config.</li>
|
||
<li><a
|
||
href="https://github.com/prettier/eslint-config-prettier">eslint-config-prettier</a>
|
||
- Prettier config for ESlint maintained by Prettier team.</li>
|
||
<li><a href="https://github.com/feross/standard">Standard</a> -
|
||
JavaScript Standard Style.</li>
|
||
<li><a href="https://github.com/supermind/superlint">Superlint</a> -
|
||
JavaScript Supermind Style.</li>
|
||
<li><a href="https://github.com/sindresorhus/xo">XO</a> - JavaScript
|
||
happiness style linter ❤️.</li>
|
||
</ul>
|
||
<h2 id="plugins">Plugins</h2>
|
||
<h3 id="code-quality">Code Quality</h3>
|
||
<ul>
|
||
<li><a
|
||
href="https://github.com/es-tooling/eslint-plugin-depend">depend</a> -
|
||
Helps detect dependency tree bloat and redundant polyfills.</li>
|
||
<li><a href="https://github.com/github/eslint-plugin-github">GitHub</a>
|
||
- Misc. rules from GitHub.</li>
|
||
<li><a
|
||
href="https://github.com/SonarSource/SonarJS/blob/master/packages/jsts/src/rules/README.md">SonarJS</a>
|
||
- Rules detecting bugs and suspicious patterns.</li>
|
||
<li><a
|
||
href="https://github.com/sindresorhus/eslint-plugin-unicorn">Unicorn</a>
|
||
- Various awesome ESLint rules.</li>
|
||
<li><a href="https://github.com/mysticatea/eslint-plugin"><span
|
||
class="citation"
|
||
data-cites="mysticatea/eslint-plugin">@mysticatea/eslint-plugin</span></a>
|
||
- Misc. rules.</li>
|
||
<li><a href="https://github.com/brettz9/eslint-plugin"><span
|
||
class="citation"
|
||
data-cites="brettz9/eslint-plugin">@brettz9/eslint-plugin</span></a> -
|
||
Misc. rules. of <code>@mysticatea</code> without the personal
|
||
config.</li>
|
||
<li><a href="https://github.com/azat-io/eslint-plugin-de-morgan">De
|
||
Morgan</a> - Transforms logical expressions in code to make them easier
|
||
to understand.</li>
|
||
<li><a
|
||
href="https://github.com/aryelu/eslint-plugin-code-complete">eslint-plugin-code-complete</a>
|
||
- A custom ESLint plugin that enforces principles of clean, maintainable
|
||
software design — inspired by Code Complete.</li>
|
||
</ul>
|
||
<h3 id="compatibility">Compatibility</h3>
|
||
<ul>
|
||
<li><a
|
||
href="https://github.com/amilajack/eslint-plugin-compat">Compat</a> -
|
||
Lint browser compatibility of APIs used (<a
|
||
href="http://caniuse.com/#search=fetch">caniuse</a> as an ESLint
|
||
plugin).</li>
|
||
<li><a
|
||
href="https://github.com/robatwilliams/es-compat">ecmascript-compat</a>
|
||
- Disable ECMAScript language features not supported by your
|
||
browserslist targets.</li>
|
||
<li><a
|
||
href="https://github.com/eslint-community/eslint-plugin-es-x">es-x</a> -
|
||
Disable specific ECMAScript language versions or individual features.
|
||
Properly maintained fork of no longer maintained
|
||
<code>eslint-plugin-es</code>.</li>
|
||
<li><a href="https://github.com/nkt/eslint-plugin-es5">es5</a> - ESLint
|
||
plugin for ES5 users (forbid ES2015+ usage).</li>
|
||
<li><a href="https://github.com/Volox/eslint-plugin-ie11">ie11</a> -
|
||
Detect unsupported ES6 features in IE11.</li>
|
||
</ul>
|
||
<h3 id="css-in-js">CSS in JS</h3>
|
||
<ul>
|
||
<li><a
|
||
href="https://github.com/atfzl/eslint-plugin-css-modules">CSS-modules</a>
|
||
- Lint undefined or unused rules for css modules.</li>
|
||
<li><a
|
||
href="https://github.com/emotion-js/emotion/tree/master/packages/eslint-plugin">Emotion</a>
|
||
- ESLint rules for emotion.</li>
|
||
<li>Styled Components
|
||
<ul>
|
||
<li><a
|
||
href="https://github.com/tinloof/eslint-plugin-better-styled-components">Better
|
||
Styled Components</a> - Auto fixable ESlint’s rules for styled
|
||
components.</li>
|
||
<li><a
|
||
href="https://github.com/brendanmorrell/eslint-plugin-styled-components-a11y">styled-components-a11y</a>
|
||
- A11y for Styled Components.</li>
|
||
</ul></li>
|
||
<li><a
|
||
href="https://github.com/antebudimir/eslint-plugin-vanilla-extract">vanilla-extract</a>
|
||
- An ESLint plugin for enforcing CSS property ordering in <a
|
||
href="https://github.com/vanilla-extract-css/vanilla-extract">vanilla-extract
|
||
CSS</a> styles.</li>
|
||
</ul>
|
||
<h3 id="deprecation">Deprecation</h3>
|
||
<ul>
|
||
<li><a
|
||
href="https://github.com/AlexMost/eslint-plugin-deprecate">deprecate</a>
|
||
- Mark functions or modules as deprecated and get lint messages when
|
||
they are used.</li>
|
||
<li><a
|
||
href="https://github.com/mradionov/eslint-plugin-disable">disable</a> -
|
||
Disable specified plugins using file path patterns and inline
|
||
comments.</li>
|
||
</ul>
|
||
<h3 id="embedded">Embedded</h3>
|
||
<ul>
|
||
<li><a
|
||
href="https://github.com/BenoitZugmeyer/eslint-plugin-html">HTML</a> -
|
||
Linting for JavaScript inside of HTML <code><script></code>
|
||
tags.</li>
|
||
<li><a
|
||
href="https://github.com/eslint/eslint-plugin-markdown">Markdown</a> -
|
||
Linting for JavaScript inside of Markdown.</li>
|
||
</ul>
|
||
<h3 id="frameworks">Frameworks</h3>
|
||
<ul>
|
||
<li><a
|
||
href="https://github.com/angular-eslint/angular-eslint">Angular</a> -
|
||
Linting rules for Angular (v2+).</li>
|
||
<li><a
|
||
href="https://github.com/Gillespie59/eslint-plugin-angular">AngularJS</a>
|
||
- Linting rules to adhere to the <a
|
||
href="https://github.com/johnpapa/angular-styleguide">John Papa’s
|
||
AngularJS Styleguide</a>.</li>
|
||
<li><a href="https://github.com/ota-meshi/eslint-plugin-astro">Astro</a>
|
||
- Plugin for <a
|
||
href="https://docs.astro.build/en/core-concepts/astro-components/">Astro
|
||
components</a>.</li>
|
||
<li><a
|
||
href="https://github.com/ilyavolodin/eslint-plugin-backbone">Backbone</a>
|
||
- Linting rules for Backbone.</li>
|
||
<li><a href="https://github.com/ember-cli/eslint-plugin-ember">Ember</a>
|
||
- Linting rules for Ember.</li>
|
||
<li><a
|
||
href="https://github.com/continuationlabs/eslint-plugin-hapi">Hapi</a> -
|
||
Linting rules for hapi.</li>
|
||
<li><a
|
||
href="https://github.com/meteor/meteor/tree/devel/npm-packages/eslint-plugin-meteor">Meteor</a>
|
||
- Meteor specific linting rules for ESLint.</li>
|
||
<li>React
|
||
<ul>
|
||
<li><a href="https://github.com/jsx-eslint/eslint-plugin-jsx-a11y">JSX
|
||
a11y</a> - Accessibility rules on JSX elements.</li>
|
||
<li><a href="https://github.com/yannickcr/eslint-plugin-react">React</a>
|
||
- Linting rules for React and JSX.</li>
|
||
<li><a
|
||
href="https://github.com/facebook/react/tree/master/packages/eslint-plugin-react-hooks">React
|
||
Hooks</a> - Linting rules for React Hooks.</li>
|
||
<li><a
|
||
href="https://github.com/Intellicode/eslint-plugin-react-native">React
|
||
Native</a> - React Native specific linting rules.</li>
|
||
<li><a
|
||
href="https://github.com/DianaSuvorova/eslint-plugin-react-redux">React-Redux</a>
|
||
- React-Redux specific linting rules.</li>
|
||
<li><a
|
||
href="https://github.com/ArnaudBarre/eslint-plugin-react-refresh">React
|
||
Refresh</a> - Improve HMR experience when using Vite.</li>
|
||
</ul></li>
|
||
<li><a
|
||
href="https://github.com/joshwilsonvu/eslint-plugin-solid">Solid</a> -
|
||
Linting rules for Solid and JSX.</li>
|
||
<li><a
|
||
href="https://github.com/sveltejs/eslint-plugin-svelte">Svelte</a> -
|
||
Linting rules for Svelte v3 Components.</li>
|
||
<li>Vue
|
||
<ul>
|
||
<li><a href="https://github.com/vuejs/eslint-plugin-vue">VueJS</a> -
|
||
Plugin for VueJS.</li>
|
||
<li><a
|
||
href="https://github.com/future-architect/eslint-plugin-vue-scoped-css">VueJS
|
||
Scoped CSS</a> - Plugin for Scoped CSS in VueJS.</li>
|
||
</ul></li>
|
||
</ul>
|
||
<h3 id="languages-and-environments">Languages and Environments</h3>
|
||
<ul>
|
||
<li><a
|
||
href="https://github.com/babel/babel/tree/main/eslint/babel-eslint-plugin">Babel</a>
|
||
- Adds replacements for built-in rules to include Babel features.</li>
|
||
<li><a
|
||
href="https://github.com/not-an-aardvark/eslint-plugin-eslint-plugin">eslint-plugin-eslint-plugin</a>
|
||
- An ESLint plugin for linting ESLint plugins.</li>
|
||
<li>Flow
|
||
<ul>
|
||
<li><a href="https://github.com/gajus/eslint-plugin-flowtype">Flow</a> -
|
||
Flow type linting rules.</li>
|
||
<li><a
|
||
href="https://github.com/amilajack/eslint-plugin-flowtype-errors">Flow
|
||
Errors</a> - Run Flow as an ESLint plugin.</li>
|
||
</ul></li>
|
||
<li><a href="https://github.com/yeonjuan/html-eslint">HTML</a> - ESLint
|
||
plugin for HTML.</li>
|
||
<li>JSON
|
||
<ul>
|
||
<li><a href="https://github.com/azeemba/eslint-plugin-json">JSON</a> -
|
||
Lint your JSON files.</li>
|
||
<li><a href="https://github.com/Bkucera/eslint-plugin-json-format">JSON,
|
||
package.json</a> - Lint, format, and auto-fix your JSON files. Sort your
|
||
<code>package.json</code>.</li>
|
||
<li><a href="https://github.com/ota-meshi/eslint-plugin-jsonc">JSON with
|
||
Comments</a> - ESLint plugin for JSON, JSONC and JSON5.</li>
|
||
<li><a
|
||
href="https://github.com/ota-meshi/eslint-plugin-json-schema-validator">JSON
|
||
Schema</a> - Validates data defined in JavaScript, JSON, YAML and TOML
|
||
using JSON Schema Validator.</li>
|
||
</ul></li>
|
||
<li><a
|
||
href="https://github.com/mdx-js/eslint-mdx/tree/master/packages/eslint-plugin-mdx">MDX</a>
|
||
- ESLint Parser/Plugin for MDX.</li>
|
||
<li><a href="https://github.com/eslint-community/eslint-plugin-n">N</a>
|
||
- Additional ESLint’s rules for Node.js. Properly maintained fork of no
|
||
longer maintained <code>eslint-plugin-node</code>.</li>
|
||
<li><a href="https://github.com/gajus/eslint-plugin-sql">SQL</a> - SQL
|
||
linting rules for ESLint.</li>
|
||
<li><a href="https://github.com/ota-meshi/eslint-plugin-toml">TOML</a> -
|
||
ESLint plugin for TOML.</li>
|
||
<li><a
|
||
href="https://github.com/typescript-eslint/typescript-eslint/tree/master/packages/eslint-plugin">TypeScript</a>
|
||
- Linting rules for TypeScript.</li>
|
||
<li><a href="https://github.com/ota-meshi/eslint-plugin-yml">YAML</a> -
|
||
ESLint plugin for YAML.</li>
|
||
</ul>
|
||
<h3 id="libraries">Libraries</h3>
|
||
<ul>
|
||
<li>GraphQL
|
||
<ul>
|
||
<li><a
|
||
href="https://github.com/dotansimha/graphql-eslint">dotansimha/graphql-eslint</a>
|
||
- Validates, prettifies and checks your GraphQL operations and GraphQL
|
||
schema for best-practices.</li>
|
||
<li><a
|
||
href="https://github.com/apollostack/eslint-plugin-graphql">apollostack/eslint-plugin-graphql</a>
|
||
- Check your GraphQL query strings against a schema.</li>
|
||
</ul></li>
|
||
<li><a
|
||
href="https://github.com/borremosch/eslint-plugin-type-graphql">TypeGraphQL</a>
|
||
- Linting rules for TypeGraphQL, targeted at finding common
|
||
mistakes.</li>
|
||
<li><a
|
||
href="https://github.com/wikimedia/eslint-plugin-no-jquery">jQuery</a> -
|
||
Linting rules for jQuery, including versioned configs for deprecated
|
||
features.</li>
|
||
<li><a href="https://github.com/gajus/eslint-plugin-jsdoc">JSDoc</a> -
|
||
Linting rules for JSDoc comments (including the JavaScript within
|
||
<code>@example</code>).</li>
|
||
<li>Lodash
|
||
<ul>
|
||
<li><a href="https://github.com/wix/eslint-plugin-lodash">Lodash</a> -
|
||
Lodash specific linting rules.</li>
|
||
<li><a
|
||
href="https://github.com/jfmengels/eslint-plugin-lodash-fp">Lodash/fp</a>
|
||
- Lodash/fp specific linting rules.</li>
|
||
<li><a
|
||
href="https://github.com/ota-meshi/eslint-plugin-lodash-template">Lodash
|
||
template</a> - Plugin for Lodash template/Underscore template.</li>
|
||
<li><a
|
||
href="https://github.com/platinumazure/eslint-plugin-microtemplates">Microtemplates</a>
|
||
(Used in Lodash and Underscore.js)</li>
|
||
</ul></li>
|
||
<li><a
|
||
href="https://github.com/nfroidure/eslint-plugin-mongodb">Mongodb</a> -
|
||
Mongodb native Node.js driver linting rules.</li>
|
||
<li><a href="https://github.com/ramda/eslint-plugin-ramda">Ramda</a> -
|
||
Ramda specific linting rules.</li>
|
||
<li><a
|
||
href="https://github.com/cvisco/eslint-plugin-requirejs">RequireJS</a> -
|
||
Linting rules for RequireJS.</li>
|
||
<li><a
|
||
href="https://github.com/francoismassart/eslint-plugin-tailwindcss">Tailwind
|
||
CSS</a> - Linting rules for Tailwind CSS classnames.</li>
|
||
</ul>
|
||
<h3 id="misc">Misc</h3>
|
||
<ul>
|
||
<li><a href="https://github.com/paleite/eslint-plugin-diff">Diff</a> -
|
||
Run ESLint on your changed lines only. Also supports CI!</li>
|
||
<li><a href="https://github.com/ilyub/eslint-plugin-misc">Misc</a> -
|
||
Miscellaneous rules including rules for creating custom checks and
|
||
wrapping (modifying) third-party rules.</li>
|
||
<li><a
|
||
href="https://github.com/nickdeis/eslint-plugin-notice">Notice</a> - An
|
||
eslint rule that checks the top of files and fixes them too!</li>
|
||
<li><a
|
||
href="https://github.com/davidjbradshaw/eslint-plugin-only-error">Only-Error</a>
|
||
- Convert all rules to errors.</li>
|
||
<li><a
|
||
href="https://github.com/bfanger/eslint-plugin-only-warn">Only-Warn</a>
|
||
- Convert all rules to warnings.</li>
|
||
<li><a
|
||
href="https://github.com/coderaiser/putout/tree/master/packages/eslint-plugin-putout">PutOut</a>
|
||
- an ESLint plugin integrates <a
|
||
href="https://github.com/coderaiser/putout">putout</a> linter into
|
||
ESLint.</li>
|
||
<li><a
|
||
href="https://github.com/yarax/eslint-plugin-typelint">TypeLint</a> -
|
||
Introduces types, based on existing schemas (Swagger, Redux) and linting
|
||
access to object properties, preventing <code>undefined</code>
|
||
errors.</li>
|
||
<li><a href="https://github.com/amwmedia/eslint-plugin-woke">Woke</a> -
|
||
Helps catch insensitive words, promoting an inclusive codebase.</li>
|
||
</ul>
|
||
<h3 id="practices-and-specific-es-features">Practices and Specific ES
|
||
Features</h3>
|
||
<ul>
|
||
<li><a
|
||
href="https://github.com/freaktechnik/eslint-plugin-array-func">array-func</a>
|
||
- Avoid redundancy when using es2015 array methods and functions.</li>
|
||
<li><a
|
||
href="https://github.com/getify/eslint-plugin-proper-arrows">arrow
|
||
functions</a> - ESLint rules to ensure proper arrow function
|
||
definitions.</li>
|
||
<li><a
|
||
href="https://github.com/javierbrea/eslint-plugin-boundaries">boundaries</a>
|
||
- Ensures that your architecture boundaries are respected by the
|
||
elements in your project checking file structure and dependencies.</li>
|
||
<li><a
|
||
href="https://github.com/eslint-community/eslint-plugin-eslint-comments"><span
|
||
class="citation"
|
||
data-cites="eslint-community/eslint-plugin-eslint-comments">@eslint-community/eslint-plugin-eslint-comments</span></a>
|
||
- Best practices about ESLint directive comments
|
||
(<code>/*eslint-disable*/</code>, etc.). Properly maintained fork of no
|
||
longer maintained <code>eslint-plugin-eslint-comments</code>.</li>
|
||
<li><a
|
||
href="https://github.com/Amnish04/eslint-plugin-error-cause">eslint-plugin-error-cause</a>
|
||
- A plugin to preserve original error context when re-throwing
|
||
exceptions.</li>
|
||
<li><a
|
||
href="https://github.com/CodelyTV/eslint-plugin-hexagonal-architecture">eslint-plugin-hexagonal-architecture</a>
|
||
- A plugin that helps you to enforce hexagonal architecture best
|
||
practices.</li>
|
||
<li><a
|
||
href="https://github.com/kantord/eslint-plugin-write-good-comments">eslint-plugin-write-good-comments</a>
|
||
- Enforce good writing style in comments.</li>
|
||
<li><a
|
||
href="https://github.com/Akronae/eslint-plugin-exception-handling">eslint-plugin-exception-handling</a>
|
||
- Lints unhandled functions that might throw errors.</li>
|
||
<li><a href="https://github.com/jfmengels/eslint-plugin-fp">fp</a> -
|
||
ESLint rules for functional programming.</li>
|
||
<li><a
|
||
href="https://github.com/jonaskello/eslint-plugin-functional">functional</a>
|
||
- ESLint rules to disable mutation and promote fp in JavaScript and
|
||
TypeScript.</li>
|
||
<li><a
|
||
href="https://github.com/jhusain/eslint-plugin-immutable">Immutable</a>
|
||
- Disable all mutation in JavaScript.</li>
|
||
<li><a
|
||
href="https://github.com/benmosher/eslint-plugin-import">import</a> -
|
||
Linting of ES2015+ import/export syntax, and prevent issues with
|
||
misspelling of file paths and import names.</li>
|
||
<li><a
|
||
href="https://github.com/un-ts/eslint-plugin-import-x">import-x</a> -
|
||
Linting of ES2015+ import/export syntax, and prevent issues with
|
||
misspelling of file paths and import names. Lightweight fork of
|
||
<code>eslint-plugin-import</code>, but which breaks backwards
|
||
compatibility.</li>
|
||
<li><a href="https://github.com/ota-meshi/eslint-plugin-math">Math</a> -
|
||
ESLint plugin related to Math object and Number.</li>
|
||
<li><a
|
||
href="https://github.com/Trott/eslint-plugin-new-with-error">new-with-error</a>
|
||
- Require errors to be thrown using <code>new</code>.
|
||
<!-- lint ignore awesome-spell-check --></li>
|
||
<li><a
|
||
href="https://github.com/causalhq/eslint-plugin-no-argument-spread">no-argument-spread</a>
|
||
- Lints against expressions like <code>Math.max(...args)</code> that can
|
||
lead to a stack overflow for large arrays.</li>
|
||
<li><a
|
||
href="https://github.com/wisniewski94/eslint-plugin-no-comments">no-comments</a>
|
||
- Prevents leaking comments into production if bundler is not used and
|
||
stops developers from commenting out old lines of code.</li>
|
||
<li><a
|
||
href="https://github.com/markalfred/eslint-plugin-no-constructor-bind">no-constructor-bind</a>
|
||
- Encourages use of class properties by reporting use of
|
||
<code>this</code> with <code>bind</code> or setting state in
|
||
constructors.</li>
|
||
<li><a
|
||
href="https://github.com/johnstonbl01/eslint-no-inferred-method-name">no-inferred-method-name</a>
|
||
- Custom rule for ESLint that checks for inferred method names within
|
||
object literals.</li>
|
||
<li><a
|
||
href="https://github.com/buildo/eslint-plugin-no-loops">no-loops</a> -
|
||
It’s 2019 and you still use loops?</li>
|
||
<li><a
|
||
href="https://github.com/brettz9/eslint-plugin-query">no-restricted-syntax</a>
|
||
- Show queried syntax’s content in messages.</li>
|
||
<li><a
|
||
href="https://github.com/dustinspecker/eslint-plugin-no-use-extend-native">no-use-extend-native</a>
|
||
- Prevent using extended native objects.</li>
|
||
<li><a
|
||
href="https://github.com/xjamundx/eslint-plugin-promise">Promise</a> -
|
||
Best practices when working with promises.</li>
|
||
<li><a
|
||
href="https://github.com/purely-functional/eslint-plugin-pure">pure</a>
|
||
- Enforce pure functions (without side effects).</li>
|
||
<li><a
|
||
href="https://makenowjust-labs.github.io/recheck/docs/usage/as-eslint-plugin/">ReDoS</a>
|
||
- ESLint plugin for finding possible ReDoS vulnerabilities.</li>
|
||
<li><a
|
||
href="https://github.com/tjenkinson/eslint-plugin-redos-detector">ReDoSDetector</a>
|
||
- ESLint plugin for finding possible ReDoS vulnerabilities.</li>
|
||
<li><a
|
||
href="https://github.com/ota-meshi/eslint-plugin-regexp">RegExp</a> -
|
||
ESLint plugin for finding regexp mistakes and style guide
|
||
violations.</li>
|
||
<li><a
|
||
href="https://github.com/leo-buneev/eslint-plugin-sort-keys-fix">sort-keys-fix</a>
|
||
- Adds fixer for ESLint <code>sort-keys</code> rule.</li>
|
||
<li><a href="https://github.com/matijs/eslint-plugin-this">this</a> -
|
||
Write pure functions, don’t allow <code>this</code>.</li>
|
||
<li><a
|
||
href="https://github.com/HKalbasi/eslint-plugin-toplevel">toplevel</a> -
|
||
An eslint plugin for disallow side effect at module toplevel.</li>
|
||
</ul>
|
||
<h3 id="performance">Performance</h3>
|
||
<ul>
|
||
<li><a
|
||
href="https://github.com/amilajack/eslint-plugin-dom">DOM</a></li>
|
||
<li><a
|
||
href="https://github.com/BrainMaestro/eslint-plugin-optimize-regex">Optimize
|
||
Regex</a> - Optimize regex literals.</li>
|
||
<li>Perf-Standard <a
|
||
href="https://github.com/Raynos/eslint-plugin-perf-standard">plugin</a>
|
||
and <a
|
||
href="https://github.com/Raynos/eslint-config-perf-standard">Config</a></li>
|
||
</ul>
|
||
<h3 id="security">Security</h3>
|
||
<ul>
|
||
<li><a
|
||
href="https://github.com/nickdeis/eslint-plugin-no-secrets">no-secrets</a>
|
||
- An eslint plugin that detects potential secrets/credentials.</li>
|
||
<li><a
|
||
href="https://github.com/mozilla/eslint-plugin-no-unsanitized">no-unsanitized</a>
|
||
- Checks for <code>innerHTML</code>, <code>outerHTML</code>, etc.</li>
|
||
<li><a href="https://github.com/shiva-hack/eslint-plugin-pii">pii</a> -
|
||
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.</li>
|
||
<li><a
|
||
href="https://github.com/nodesecurity/eslint-plugin-security">Security</a>
|
||
- ESLint rules for Node Security.</li>
|
||
<li><a href="https://github.com/Rantanen/eslint-plugin-xss">xss</a> -
|
||
Tries to detect XSS issues in codebase before they end up in
|
||
production.</li>
|
||
</ul>
|
||
<h3 id="style">Style</h3>
|
||
<ul>
|
||
<li><a href="https://eslint.style/">ESLint Stylistic</a> - <a
|
||
href="https://eslint.org/blog/2023/10/deprecating-formatting-rules/">Formatting
|
||
and stylistic ESLint core rules moved to this project and are maintained
|
||
by the community.</a></li>
|
||
<li><a
|
||
href="https://www.npmjs.com/package/eslint-plugin-const-case">const
|
||
case</a> - Enforce capitalization of constant primitive literals.</li>
|
||
<li><a
|
||
href="https://github.com/platinumazure/eslint-plugin-editorconfig">editorconfig</a>
|
||
- Derive rules from <a
|
||
href="https://editorconfig.org/"><code>.editorconfig</code></a>.</li>
|
||
<li><a
|
||
href="https://github.com/selaux/eslint-plugin-filenames">filenames</a> -
|
||
Ensure consistent filenames for your JavaScript files. No longer
|
||
maintained and does not work with ESlint 9 at all.</li>
|
||
<li><a
|
||
href="https://github.com/lydell/eslint-plugin-simple-import-sort">Simple
|
||
import sort</a> - Easy autofixable import sorting.</li>
|
||
<li><a
|
||
href="https://github.com/azat-io/eslint-plugin-perfectionist">perfectionist
|
||
sorting</a> - Sort objects, imports, TypeScript types, enums, JSX props,
|
||
etc.</li>
|
||
<li><a
|
||
href="https://github.com/sngn/eslint-plugin-split-and-sort-imports">split-and-sort-imports</a>
|
||
- Sorts imports and splits ‘multiple’ imports into single line
|
||
imports.</li>
|
||
<li><a
|
||
href="https://github.com/lukeapage/eslint-plugin-switch-case">Switch
|
||
case</a> - Switch-case-specific linting rules for ESLint.</li>
|
||
<li><a href="https://github.com/mu-io/eslint-plugin-padding">padding</a>
|
||
- Allows/disallows padding between statements.</li>
|
||
<li><a href="https://github.com/vitonsky/eslint-plugin-paths">paths</a>
|
||
- Use paths from tsconfig/jsconfig and auto fix relative paths to
|
||
aliases.</li>
|
||
<li><a
|
||
href="https://www.npmjs.com/package/@gitbutler/no-relative-imports"><span
|
||
class="citation"
|
||
data-cites="gitbutler/no-relative-imports">@gitbutler/no-relative-imports</span></a>
|
||
- Use paths from tsconfig and auto fix relative paths to aliases.
|
||
Observes tsconfig inheritance.</li>
|
||
</ul>
|
||
<h3 id="testing-tools">Testing Tools</h3>
|
||
<ul>
|
||
<li><a href="https://github.com/avajs/eslint-plugin-ava">AVA</a> -
|
||
Linting rules for AVA.</li>
|
||
<li>Chai
|
||
<ul>
|
||
<li><a
|
||
href="https://github.com/turbo87/eslint-plugin-chai-expect">expect
|
||
practices</a></li>
|
||
<li><a
|
||
href="https://github.com/ihordiachenko/eslint-plugin-chai-friendly">with
|
||
unused expressions</a></li>
|
||
<li><a
|
||
href="https://github.com/gavinaiken/eslint-plugin-chai-expect-keywords">permitted
|
||
keywords</a></li>
|
||
<li><a
|
||
href="https://github.com/fintechstudios/eslint-plugin-chai-as-promised">with
|
||
chai-as-promised plugin</a> <!-- lint disable double-link --></li>
|
||
<li><a
|
||
href="https://github.com/t-huth/eslint-plugin-chai-assert-bdd">globals</a></li>
|
||
</ul></li>
|
||
<li><a
|
||
href="https://github.com/darrinholst/eslint-plugin-cucumber">Cucumber</a>
|
||
- Linting rules for Cucumber.</li>
|
||
<li><a
|
||
href="https://github.com/cypress-io/eslint-plugin-cypress">Cypress</a> -
|
||
Linting rules for Cypress.</li>
|
||
<li><a
|
||
href="https://github.com/tlvince/eslint-plugin-jasmine">Jasmine</a> -
|
||
Linting rules for Jasmine.</li>
|
||
<li>Jest
|
||
<ul>
|
||
<li><a
|
||
href="https://github.com/jest-community/eslint-plugin-jest">Enforcing
|
||
practices</a> - Linting rules for Jest.</li>
|
||
<li><a
|
||
href="https://github.com/dangreenisrael/eslint-plugin-jest-formatting">Enforcing
|
||
consistent formatting</a> - Formatting rules for Jest.</li>
|
||
<li><a
|
||
href="https://www.npmjs.com/package/eslint-plugin-jest-async">Jest-async</a>
|
||
- Async linting rule for Jest.</li>
|
||
<li><a
|
||
href="https://github.com/testing-library/eslint-plugin-jest-dom">Jest-DOM</a>
|
||
- Linting rules for Jest-DOM.</li>
|
||
</ul></li>
|
||
<li>Mocha
|
||
<ul>
|
||
<li><a href="https://github.com/lo1tuma/eslint-plugin-mocha">Enforcing
|
||
practices</a> - Linting rules for Mocha.</li>
|
||
<li><a
|
||
href="https://github.com/onechiporenko/eslint-plugin-mocha-cleanup/">Enforcing
|
||
manageability</a></li>
|
||
</ul></li>
|
||
<li><a
|
||
href="https://github.com/playwright-community/eslint-plugin-playwright">Playwright</a>
|
||
- Linting rules for Playwright.</li>
|
||
<li><a
|
||
href="https://github.com/platinumazure/eslint-plugin-qunit">QUnit</a> -
|
||
Linting rules for QUnit.</li>
|
||
<li><a
|
||
href="https://github.com/testcafe-community/eslint-plugin-testcafe-community">TestCafe-Community</a>
|
||
- TestCafe linting rules with env globals (fork from <a
|
||
href="https://github.com/miherlosev/eslint-plugin-testcafe">TestCafe
|
||
globals</a>).</li>
|
||
<li><a
|
||
href="https://github.com/testing-library/eslint-plugin-testing-library">Testing
|
||
Library</a> - Linting rules for Testing Library.</li>
|
||
</ul>
|
||
<h2 id="parsers">Parsers</h2>
|
||
<ul>
|
||
<li><a
|
||
href="https://github.com/babel/babel/tree/main/eslint/babel-eslint-parser">babel-eslint-parser</a>
|
||
- Allows you to lint ALL valid Babel code with the fantastic
|
||
ESLint.</li>
|
||
<li><a
|
||
href="https://github.com/typescript-eslint/typescript-eslint">TypeScript</a>
|
||
- A TypeScript parser that produces output compatible with ESLint.</li>
|
||
<li><a
|
||
href="https://github.com/RokuRoad/eslint-plugin-roku">BrightScript</a> -
|
||
BrightScript plugin for Roku development. Includes Parser and
|
||
Rules.</li>
|
||
<li><a href="https://github.com/dotansimha/graphql-eslint">GraphQL</a> -
|
||
Parser for the GraphQL AST. Includes parser, plugin, processor (for
|
||
non-graphql files) and rules.</li>
|
||
</ul>
|
||
<h2 id="formatters">Formatters</h2>
|
||
<!-- ignore is to keep "github" lower-case -->
|
||
<!--lint ignore awesome-spell-check-->
|
||
<ul>
|
||
<li><a
|
||
href="https://github.com/shuoshubao/eslint-formatter-html">html</a> - A
|
||
enhanced ESLint formatter.</li>
|
||
<li><a
|
||
href="https://github.com/brettz9/eslint-formatter-badger">badger</a> -
|
||
Make SVG-based badges summarizing ESLint results (e.g., for use on a
|
||
README).</li>
|
||
<li><a
|
||
href="https://github.com/JamieMason/eslint-formatter-git-log">git-log</a>
|
||
- ESLint Formatter featuring Git Author, Date, and Hash.</li>
|
||
<li><a
|
||
href="https://github.com/hipstersmoothie/eslint-formatter-github">github</a>
|
||
- See ESLint errors and warnings directly in pull requests.</li>
|
||
<li><a
|
||
href="https://gitlab.com/remcohaszing/eslint-formatter-gitlab">gitlab</a>
|
||
- Output ESLint results in the GitLab code quality results.</li>
|
||
<li><a href="https://github.com/fengzilong/eslint-formatter-mo">mo</a> -
|
||
Good-lookin’ ESLint formatter and also for delightful reading
|
||
experience.</li>
|
||
<li><a
|
||
href="https://www.npmjs.com/package/@microsoft/eslint-formatter-sarif">SARIF</a>
|
||
- Generate a results in a SARIF format so it can be imported into tools
|
||
like GitHub Advanced Security.</li>
|
||
<li><a
|
||
href="https://github.com/davidjbradshaw/eslint-formatter-summary-chart">summary-chart</a>
|
||
- Format ESLint output into a bar chart.</li>
|
||
</ul>
|
||
<h2 id="globals">Globals</h2>
|
||
<ul>
|
||
<li><a
|
||
href="https://github.com/facebook/create-react-app/tree/main/packages/confusing-browser-globals">confusing-browser-globals</a>
|
||
- A curated list of browser globals that commonly cause confusion and
|
||
are not recommended to use without an explicit window. qualifier.</li>
|
||
<li><a href="https://github.com/sindresorhus/globals">ES and browser
|
||
globals</a> (originally from ESLint)</li>
|
||
<li><a
|
||
href="https://github.com/t-huth/eslint-plugin-chai-assert-bdd">chai
|
||
globals</a></li>
|
||
<li><a
|
||
href="https://github.com/miherlosev/eslint-plugin-testcafe">TestCafe
|
||
globals</a> - <code>fixture</code> & <code>test</code> globals for
|
||
TestCafe.</li>
|
||
</ul>
|
||
<h2 id="tools">Tools</h2>
|
||
<ul>
|
||
<li><a
|
||
href="https://github.com/brettz9/es-file-traverse">es-file-traverse</a>
|
||
- 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.</li>
|
||
<li><a
|
||
href="https://github.com/sarbbottam/eslint-find-rules">eslint-find-rules</a>
|
||
- Find built-in ESLint rules you don’t have in your custom config.</li>
|
||
<li><a
|
||
href="https://github.com/wagerfield/eslint-index">eslint-index</a> - CLI
|
||
for finding and managing rules in ESLint config files.</li>
|
||
<li><a
|
||
href="https://github.com/mizdra/eslint-interactive">eslint-interactive</a>
|
||
- The CLI tool to fix huge number of ESLint errors.</li>
|
||
<li><a
|
||
href="https://github.com/pimlie/eslint-multiplexer">eslint-multiplexer</a>
|
||
- Multiplex eslint results and merge results for common files.</li>
|
||
<li><a href="https://github.com/IanVS/eslint-nibble">eslint-nibble</a> -
|
||
Ease into ESLint, by fixing one rule at a time.</li>
|
||
<li><a
|
||
href="https://github.com/Jugbot/eslint-plugin-rule-adoption">eslint-plugin-rule-adoption</a>
|
||
- An eslint plugin for incremental rule adoption, when
|
||
<code>--fix</code> and codemods don’t cut it.</li>
|
||
<li><a
|
||
href="https://github.com/jfmengels/eslint-rule-documentation">eslint-rule-documentation</a>
|
||
- Find the url for the documentation of an ESLint rule.</li>
|
||
<li><a href="https://github.com/rizowski/eslint-watch">eslint-watch</a>
|
||
- Run ESLint with watch mode.</li>
|
||
<li><a href="https://github.com/codacy/codacy-eslint">codacy-eslint</a>
|
||
- Docker used at <a href="https://www.codacy.com">Codacy</a> to run
|
||
ESLint.</li>
|
||
<li><a href="https://github.com/pinterest/esprint">esprint</a> - Run
|
||
ESLint across multiple threads.</li>
|
||
<li><a
|
||
href="https://github.com/eslint/generator-eslint">generator-eslint</a> -
|
||
Generate ESLint plugin and rules with <a
|
||
href="http://yeoman.io/">Yeoman</a>.</li>
|
||
<li><a href="https://github.com/fisker/editor-info">editor-info</a> -
|
||
Detect whether one is within an editor/IDE and which type, allowing one
|
||
to tweak ESLint configuration accordingly.</li>
|
||
<li><a
|
||
href="https://github.com/fengzilong/eslint-dashboard">eslint-dashboard</a>
|
||
- Interactive ESLint workflow that lives in your terminal.</li>
|
||
<li><a
|
||
href="https://github.com/AriPerkkio/eslint-remote-tester">eslint-remote-tester</a>
|
||
- CLI tool for testing given ESlint rules against multiple repositories
|
||
at once.</li>
|
||
</ul>
|
||
<h2 id="developing-for-eslint">Developing for ESLint</h2>
|
||
<ul>
|
||
<li><a
|
||
href="https://github.com/bmish/eslint-doc-generator">eslint-doc-generator</a>
|
||
- Generate documentation for your ESLint plugin including a rules table
|
||
for your readme and header for your rule docs.</li>
|
||
<li><a
|
||
href="https://github.com/wikimedia/eslint-docgen">eslint-docgen</a> -
|
||
Automatically generate ESLint plugin documentation from rule metadata
|
||
and test cases.</li>
|
||
</ul>
|
||
<h2 id="tutorials">Tutorials</h2>
|
||
<ul>
|
||
<li><a
|
||
href="https://medium.com/tumblbug-engineering/creating-an-eslint-plugin-87f1cb42767f">Creating
|
||
an ESLint Plugin</a> - Article walking through the creation of an ESLint
|
||
rule and plugin.</li>
|
||
<li><a
|
||
href="https://medium.com/@dan_abramov/lint-like-it-s-2015-6987d44c5b48#.5p3yk0b03">Lint
|
||
Like It’s 2015</a> - Article walking through the benefits of using
|
||
ESLint.</li>
|
||
<li><a
|
||
href="http://blog.cowchimp.com/writing-a-custom-eslint-rule-to-spot-undeclared-props/">Writing
|
||
a rule to spot undeclared props hiding in plain sight</a> - Article
|
||
about creating rules that require scope analysis.</li>
|
||
<li><a href="https://adropincalm.com/blog/dear-old-eslint/">Dear Old
|
||
ESLint</a> - Quick intro article on ESLint.</li>
|
||
</ul>
|
||
<h2 id="installation-and-setup">Installation and Setup</h2>
|
||
<ul>
|
||
<li><a href="https://github.com/josh-stillman/lintier">Lintier</a> - CLI
|
||
to quickly scaffold an ESLint & Prettier setup in a TypeScript
|
||
project.</li>
|
||
</ul>
|
||
<p><a href="https://github.com/dustinspecker/awesome-eslint">eslint.md
|
||
Github</a></p>
|