How to setup ESLint to use AirBnB’s React rules with a React application

Setting up ESLint can seem daunting but luckily we can help

 We hope you know why you are doing it but if not in short ESLint and Prettier can help your team maintain code quality and same formatting throughout the project.

If your company has more than 1 frontend developer you will realize different developers use different editors and they want to stick to it. Most of the developers are used to the inline formatting functionality that comes with the IDE but unfortunately the most popular ones like Atom, Visual Studio Code and Webstorm each format the code differently.

What prettier does is gets everyone on the same page. Just add a .prettierrc file to your project, have all devs download the prettier plugin for their fave editor. Doing so will provide your team and especially the code reviewers some sanity.

Prettier

Step 1. Make sure you are in the project root directory and then use Yarn or NPM to add three prettier related packages.

yarn add -D prettier eslint-config-prettier eslint-plugin-prettier

ESLint

Step 2. Make sure you are in the project root directory and then use Yarn or NPM to add these ESLint packages

yarn add -D eslint eslint-plugin-react eslint-config-airbnb eslint-plugin-jsx-a11y eslint-plugin-import

Step 3. In the project root directory create a file with the following name :
.eslintrc or .eslintrc.js or .eslintrc.json

Don’t create 3 files 🙂

We’ll add a .eslintrc.json

{
  "extends": ["airbnb", "prettier", "prettier/react"],
  "plugins": ["react", "prettier"],
  "rules": {
    "react/jsx-filename-extension": [
      1,
      {
        "extensions": [".js", "jsx"]
      }
    ],
    "prettier/prettier": "error",
    "max-len": ["error", 80]
  },
  "env": {
    "browser": true
  }
  
}

What we’ve done in the example above is used the recommended config from airbnb and prettier

so a good question is: Does the order matter?

The short answer is YES 

To get started we’ve also added a few rules illustrate that we are extending our rule set while using the base rules from Airbnb and prettier

The “react/jsx-filename-extension” rules that we have added will allow us to write JSX in files with .js extension

Feel free to modify these rules to fit your style.

Next question: ok how do I now invoke the linter to go through all my files?

Step 4. To invoke your linter go to package.json and in the scripts section add the following

"lint": "eslint src -c .eslintrc.json --ext js,jsx"

Save your package.json and try running

yarn lint

or

npm run lint

This will lint the files that have the extension .js or .jsx in the src directory while respecting your rules in .eslintrc.json config file.

You can also modify this lint command to suit your needs.

Did we miss anything? Did it work for you?