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.
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"
}
}
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.