Skip to content

Gusto/eslint-config-gusto

Repository files navigation

eslint-config-gusto

A shared code style and formatting config for Gusto's JS projects.

Background

We use both eslint and prettier to lint our code:

  • eslint is for code-quality.
  • prettier is for formatting.

Our eslint config is largely based on Airbnb's eslint config. This package also includes all relevant eslint plugins (e.g. eslint-plugin-import) as dependencies so they don't need to be included manually in each project's package.json.

We also include prettier as a dependency - see the notes for setting up the prettier plugin in your editor. We're using the eslint-config-prettier which turns off all eslint rules that are unnecessary or might conflict with prettier.

As of v16 of eslint-config-gusto, prettier should be run separately from eslint in order to improve performance and the developer experience.

Installation

yarn add --dev eslint-config-gusto

also add eslint if not already added

yarn add --dev eslint

Extend the shared eslint config in your .eslintrc.js:

// .eslintrc.js

module.exports = {
  extends: 'eslint-config-gusto',
  rules: {
    // Your project-specific rules
  },
};

Extend the shared prettier config in your .prettierrc.js:

// .prettierrc.js

module.exports = require('eslint-config-gusto/.prettierrc');

Customization

ESLint

Ideally each project will just use the shared config but there are some rules that are project-specific and can't be defined here. For some examples, see this thread about which rules communities tend to override.

Prettier

Just use the shared config :) This is where we'll see the biggest benefits of consistency so let's just all use the same configuration.