question-mark
Stuck on an issue?

Lightrun Answers was designed to reduce the constant googling that comes with debugging 3rd party libraries. It collects links to all the places you might be looking at while hunting down a tough bug.

And, if you’re still stuck at the end, we’re happy to hop on a call to see how we can help out.

[eslint-config-react-app] Recommended way of config integration with ESLint, TypeScript, Prettier and VS Code

See original GitHub issue

People use VS Code a lot. It is also recommended in the docs, but it is not explained on how to configure it together with ESLint, Prettier & TypeScript together with eslint-config-react-app.

Every two months there is a new Medium article for this topic, as the configuration/dependencies always change. Wouldn’t it be nice if CRA had an official documentation on how to integrate all these with a step-by-step tutorial on the CRA website?

Describe the solution you’d like

I would like the docs to provide all the steps needed to integrate eslint-config-react-app and the additional features in their development setup.

Two major parts:

  • What do I need to configure manually in the files of my CRA project? (e. g. .eslintrc.js) Do I need additional dependencies? How to integrate other ESLint plugins?
  • What do I need to configure manually in my VS Code setup? (e. g. for the ESLint plugin (dbaeumer.vscode-eslint or the Prettier plugin)

Possible combinations that are most common:

No. CRA dependencies eslint-config-react-app Prettier TypeScript
1 x x
2 x x x
3 x x x x

For ESLint and Prettier, there should be an explanation not only how to combine the configurations, but also on how to actually use the configuration in VS Code. Also, when using Prettier, you need to make sure that its rules don’t conflict with ESLint rules.

The following is the configuration I’m running with right now for ESLint + TypeScript + Prettier (thanks, @robertcoopercode):

module.exports = {
  parser: "@typescript-eslint/parser",
  extends: [
    "react-app", // Uses the recommended rules Create React App
    "plugin:@typescript-eslint/recommended", // Uses the recommended rules from @typescript-eslint/eslint-plugin
    "prettier/@typescript-eslint", // Uses eslint-config-prettier to disable ESLint rules from @typescript-eslint/eslint-plugin that would conflict with prettier
    "plugin:prettier/recommended" // Should be last in the list. Enables eslint-plugin-prettier and eslint-config-prettier. This will display prettier errors as ESLint errors. Make sure this is always the last configuration in the extends array.
  ],
  parserOptions: {
    ecmaFeatures: {
      jsx: true // Allows for the parsing of JSX
    },
    ecmaVersion: 2018, // Allows for the parsing of modern ECMAScript features
    sourceType: "module" // Allows for the use of imports
  },
  rules: {},
  settings: {
    react: {
      version: "detect" // Tells eslint-plugin-react to automatically detect the version of React to use
    }
  }
};

It’s a hassle to keep all the configuration up to date and that, in my opinion, is what CRA should try to solve.

Describe alternatives you’ve considered

A possible alternative to requiring manual changes in the config files would be a CLI tool that automatically creates/modifies them. An explanation on how to integrate with VS Code would still be needed on the website though.

UPDATE

I decided to create a website on my own, feel free to check it out and contribute:

Website: https://eslintconfig.dev Repo: https://github.com/bennettdams/eslintconfig.dev

Issue Analytics

  • State:open
  • Created 3 years ago
  • Reactions:122
  • Comments:17 (1 by maintainers)

github_iconTop GitHub Comments

31reactions
bennettdamscommented, Sep 2, 2020

Hey! We’re now ~5 months in, so I decided to create a website on my own:

https://eslintconfig.dev/

It should be a place for curated collections of ESLint configurations for all the different templates (Create React App, Next.js, Vue, …) and setups (TypeScript, Prettier, … or combinations of those).

I would love contributions for other setups, versions or updates, so I don’t have to read another Medium article again 😅

https://github.com/bennettdams/eslintconfig.dev

29reactions
tobiaskrauscommented, May 29, 2020

I found my issue: webpack uses react-scripts own version of eslint plugins which was outdated and applied therefore different recommended rules (which i extended from).

In #9083 I explained this issue in details and proposed to give the option, to use own eslint plugins (or own versions).

This proves again the point of @bennettdams

I totally agree, that this whole topic is super complicated to research (so many articles and ways to implement) and many possible mistakes you can do. Therefore, a better documentation from create-react-app would help.

Read more comments on GitHub >

github_iconTop Results From Across the Web

How to use Prettier with ESLint and TypeScript in VSCode
Decide on the formatting configuration that best suits your style; Configure Prettier to work with ESLint. Prerequisites. A code editor ...
Read more >
Auto Format with ESLint and Prettier for React TypeScript Project
It aims that when you save a file on VSCode, files are automatically formatted by ESLint and Prettier. Roles of ESLint and Prettier....
Read more >
Setup a Typescript project with ESLint, Prettier and VS Code
You're good to go ! 1. Project setup. Initialize a new repository: mkdir typescript-starter && cd typescript-starter && npm init. Install ...
Read more >
VS Code + ESLint + Prettier + Google Style + Typescript
I'm strugling with similar stuff, but using webStorm from jetbrains, and some different tech stack, but maybe following configuration might ...
Read more >
Setup ESLINT and PRETTIER in React app
You can customise ESLint to work exactly the way you need it for your project. What is Prettier? Prettier is an opinionated code...
Read more >

github_iconTop Related Medium Post

No results found

github_iconTop Related StackOverflow Question

No results found

github_iconTroubleshoot Live Code

Lightrun enables developers to add logs, metrics and snapshots to live code - no restarts or redeploys required.
Start Free

github_iconTop Related Reddit Thread

No results found

github_iconTop Related Hackernoon Post

No results found

github_iconTop Related Tweet

No results found

github_iconTop Related Dev.to Post

No results found

github_iconTop Related Hashnode Post

No results found