/eslint-config-kensho

Primary LanguageJavaScriptMIT LicenseMIT

eslint-config-kensho

Build Status

This eslint config extends Airbnb's config (based on their style guide).

Since the upstream config is well-maintained and justified, we try to stick as close to it as possible. All divergences are annotated, and tend towards increased ES2016+ support and compatibility with our infrastructure rather than stylistic preferences.

Usage

To add JS linting to a project, first install eslint and this config as development dependencies:

$ npm i -D eslint prettier eslint-config-kensho

Add a .eslintrc.yml which extends the config:

extends: kensho

Add a script in package.json to run the linter. Example:

{
  "scripts": {
    "lint": "eslint src"
  }
}

Caveat

The eslint-plugin-X dependencies specified in package.json should actually be peer dependencies (see eslint/eslint#2518), and installed alongside eslint and this config. In practice, this is quite tedious, so we have instead specified them as dependencies and rely on npm@3's flattening to install them alongside the linter.

Note that this approach is technically incorrect, and if any plugin cannot be flattened this way (e.g. due to a conflicting version somewhere else in your dependency tree), this config will break. Since our projects use only this config, we feel that practicality outweighs absolute correctness in this case.