I want to use Prettier and ESLint together, but I experienced some conflicts just by using them one after another. I see that there are these three packages that seem to allow them to be used in tandem:
However, I am unsure which to use as these package names all contain
Which should I use?
eslint-config-prettier, you can ignore the rest.
UPDATE 2023: ESLint is deprecating formatting rules and recommend you use a source code formatter instead. From v8.53.0 onwards, you will see a deprecation warning if those formatting rules are enabled in your config. You should still use
eslint-config-prettier until the rules are removed in a new major release.
ESLint contains many rules and those that are formatting-related might conflict with Prettier, such as
space-before-function-paren, etc. Hence using them together will cause some issues. The following tools have been created to use ESLint and Prettier together.
|What it is
|An ESLint plugin.
|An ESLint configuration.
|What it does
|Runs the code (string) through
eslint --fix. The output is also a string.
|Plugins usually contain implementations for additional rules that ESLint will check for. This plugin uses Prettier under the hood and will raise ESLint errors when your code differs from Prettier's expected output.
|This config turns off formatting-related rules that might conflict with Prettier, allowing you to use Prettier with other ESLint configs like
|How to use it
|Either calling the function in your code or via
prettier-eslint-cli if you prefer the command line.
|Add it to your
|Add it to your
|Is the final output Prettier compliant?
|Depends on your ESLint config
|Do you need to run
prettier command separately?
|Do you need to use anything else?
|You may want to turn off conflicting rules using
For more information, refer to the official Prettier docs.
It's the recommended practice to let Prettier handle formatting and ESLint for non-formatting issues,
prettier-eslint is not in the same direction as that practice, hence
prettier-eslint is not recommended anymore. You can use