Skip to content
Switch branches/tags
Go to file

Latest commit

BREAKING CHANGE: eslint-plugin-testing-library will now report aggressively

Git stats


Failed to load latest commit information.
Latest commit message
Commit time


ESLint rules for all of my personal projects. Feel free to use these conventions :-)

Build Status version downloads MIT License All Contributors PRs Welcome Code of Conduct

Table of Contents


This module is distributed via npm which is bundled with node and should be installed as one of your project's devDependencies:

npm install --save-dev eslint-config-kentcdodds

This library has a required peerDependencies listing for eslint


Then add the extends to your .eslintrc.js:

module.exports = {
  extends: 'kentcdodds',
  rules: {
    // your overrides

Other configs

This config also exposes a few other configs that I use often and pull in as needed.

You can use them standalone:

module.exports = {
  extends: 'kentcdodds/<config-name>',

Or in combination with the base config (recommended)

module.exports = {
  extends: ['kentcdodds', 'kentcdodds/<config-name>'],

Note: Due to this bug you need to have the associated plugins installed to make things work. I recommend adding them as dependencies to your project if you're going to use the config for it.

  • babel-module: babel-plugin-module-resolver for the import plugin to work with the module-resolver babel plugin (eslint-plugin-import and eslint-import-resolver-babel-module)
  • babel-react-require: babel-plugin-react-require for when you're using the react-require babel plugin (should be used with "kentcdodds/react" as well) (eslint-plugin-react)
  • jest: jest testing framework
  • jsx-a11y: eslint-plugin-jsx-a11y for rules regarding accessibility with JSX (eslint-plugin-jsx-a11y)
  • react: React JS library (eslint-plugin-react)
  • webpack: Webpack for the import plugin to work with webpack overloaded imports/requires (eslint-plugin-import and eslint-import-resolver-webpack)

Things to know

  • The default config uses babel-eslint to support stage features that ESLint doesn't support and it opts to use the eslint-plugin-babel rules over the ESLint rules to support rules for these features as well.
  • All plugins needed for rules used by these configs are dependencies of this module so you don't have to install anything on your own.
  • The default config actually is composed of several configurations and you can use those individually. These are the configs it's using: possible-errors.js, best-practices.js, stylistic.js, es6/index.js, and import/index.js. You can use each of these configs yourself if you want to leave my own personal style out of it. Also, the es6 and import configs each have a possible-errors.js, best-practices.js, and stylistic.js which they are composed of as well.

Example of highly customized config

module.exports = {
  extends: [
  rules: {
    /* custom rules */


Looking to contribute? Look for the Good First Issue label.

🐛 Bugs

Please file an issue for bugs, missing documentation, or unexpected behavior.

See Bugs

💡 Feature Requests

Please file an issue to suggest new features. Vote on feature requests by adding a 👍. This helps maintainers prioritize what to work on.

See Feature Requests


Thanks goes to these people (emoji key):

Kent C. Dodds

💻 📖 🚇

Jonathan Haines


Zack Yang


Mohamed Oun


Alexander Nanberg


Hu Chen


Weyert de Boer


Marko Vujanic


Michaël De Boey

💻 📖 🔧

Justin Dorfman


Nikolay Stoynov


Andrew Mason


Ben Monro


This project follows the all-contributors specification. Contributions of any kind welcome!