All Projects β†’ kentcdodds β†’ Eslint Config Kentcdodds

kentcdodds / Eslint Config Kentcdodds

Licence: mit
ESLint configuration for projects that I do... Feel free to use this!

Programming Languages

javascript
184084 projects - #8 most used programming language

eslint-config-kentcdodds

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

Installation

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

Usage

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: [
    'kentcdodds/possible-errors',
    'kentcdodds/best-practices',
    'kentcdodds/es6/possible-errors',
    'kentcdodds/import',
    'kentcdodds/jest',
  ],
  rules: {
    /* custom rules */
  },
}

Issues

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

Contributors ✨

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!

LICENSE

MIT

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].