3 Formats your JavaScript using [`prettier`][prettier] followed by [`eslint --fix`][eslint]
5 [![Build Status][build-badge]][build]
6 [![Code Coverage][coverage-badge]][coverage]
7 [![version][version-badge]][package] [![downloads][downloads-badge]][npm-stat]
8 [![MIT License][license-badge]][license]
10 [![All Contributors](https://img.shields.io/badge/all_contributors-26-orange.svg?style=flat-square)](#contributors-)
11 [![PRs Welcome][prs-badge]][prs] [![Donate][donate-badge]][donate]
12 [![Code of Conduct][coc-badge]][coc] [![Roadmap][roadmap-badge]][roadmap]
13 [![Examples][examples-badge]][examples]
15 [![Watch on GitHub][github-watch-badge]][github-watch]
16 [![Star on GitHub][github-star-badge]][github-star]
17 [![Tweet][twitter-badge]][twitter]
21 The [`fix`][fix] feature of [`eslint`][eslint] is pretty great and can
22 auto-format/fix much of your code according to your ESLint config.
23 [`prettier`][prettier] is a more powerful automatic formatter. One of the nice
24 things about prettier is how opinionated it is. Unfortunately, it's not
25 opinionated enough and/or some opinions differ from my own. So after prettier
26 formats the code, I start getting linting errors.
30 This formats your code via `prettier`, and then passes the result of that to
31 `eslint --fix`. This way you can get the benefits of `prettier`'s superior
32 formatting capabilities, but also benefit from the configuration capabilities of
35 > For files with an extension of `.css`, `.less`, `.scss`, or `.json` this only
36 > runs `prettier` since `eslint` cannot process those.
40 This module is distributed via [npm][npm] which is bundled with [node][node] and
41 should be installed as one of your project's `devDependencies`:
44 npm install --save-dev prettier-eslint
52 const format = require("prettier-eslint");
54 // notice, no semicolon in the original text
55 const sourceCode = "const {foo} = bar";
64 semi: ["error", "never"],
70 fallbackPrettierOptions: {
75 const formatted = format(options);
77 // notice no semicolon in the formatted text
78 formatted; // const { foo } = bar
85 The source code to format.
87 #### filePath (?String)
89 The path of the file being formatted can be used to override `eslintConfig`
90 (eslint will be used to find the relevant config for the file).
92 #### eslintConfig (?Object)
94 The config to use for formatting with ESLint. Can be overridden with `filePath`.
96 #### prettierOptions (?Object)
98 The options to pass for formatting with `prettier`. If not provided,
99 `prettier-eslint` will attempt to create the options based on the `eslintConfig`
100 (whether that's provided or derived via `filePath`). You can also provide _some_
101 of the options and have the remaining options derived via your eslint config.
102 This is useful for options like `parser`.
104 **NOTE:** these options _override_ the eslint config. If you want the fallback
105 options to be used only in the case that the rule cannot be inferred from
106 eslint, see "fallbackPrettierOptions" below.
108 #### fallbackPrettierOptions (?Object)
110 The options to pass for formatting with `prettier` if `prettier-eslint` is not
111 able to create the options based on the the `eslintConfig` (whether that's
112 provided or derived via `filePath`). These options will only be used in the case
113 that the corresponding eslint rule cannot be found and the prettier option has
114 not been manually defined in `prettierOptions`. If the fallback is not given,
115 `prettier-eslint` will just use the default `prettier` value in this scenario.
117 #### logLevel (?Enum: ['trace', 'debug', 'info', 'warn', 'error', 'silent'])
119 `prettier-eslint` does quite a bit of logging if you want it to. Pass this to
120 set the number of logs you want to see. Default is `process.env.LOG_LEVEL || 'warn'`.
122 #### eslintPath (?String)
124 By default, `prettier-eslint` will try to find the relevant `eslint` (and
125 `prettier`) module based on the `filePath`. If it cannot find one, then it will
126 use the version that `prettier-eslint` has installed locally. If you'd like to
127 specify a path to the `eslint` module you would like to have `prettier-eslint`
128 use, then you can provide the full path to it with the `eslintPath` option.
130 #### prettierPath (?String)
132 This is basically the same as `eslintPath` except for the `prettier` module.
134 #### prettierLast (?Boolean)
136 By default, `prettier-eslint` will run `prettier` first, then `eslint --fix`.
137 This is great if you want to use `prettier`, but override some of the styles you
138 don't like using `eslint --fix`.
140 An alternative approach is to use different tools for different concerns. If you
141 provide `prettierLast: true`, it will run `eslint --fix` first, then `prettier`.
142 This allows you to use `eslint` to look for bugs and/or bad practices, and use
143 `prettier` to enforce code style.
147 `prettier-eslint` will **only** propagate _parsing_ errors when either `prettier` or `eslint` fails. In addition to propagating the errors, it will also log a specific message indicating what it was doing at the time of the failure.
149 **Note:** `prettier-eslint` will not show any message regarding broken rules in either `prettier` or `eslint`.
153 > Code ➡️ prettier ➡️ eslint --fix ➡️ Formatted Code ✨
155 ### inferring prettierOptions via eslintConfig
157 The `eslintConfig` and `prettierOptions` can each be provided as an argument. If
158 the `eslintConfig` is not provided, then `prettier-eslint` will look for them
159 based on the `fileName` (if no `fileName` is provided then it uses
160 `process.cwd()`). Once `prettier-eslint` has found the `eslintConfig`, the
161 `prettierOptions` are inferred from the `eslintConfig`. If some of the
162 `prettierOptions` have already been provided, then `prettier-eslint` will only
163 infer the remaining options. This inference happens in `src/utils.js`.
165 **An important thing to note** about this inference is that it may not support
166 your specific eslint config. So you'll want to check `src/utils.js` to see how
167 the inference is done for each option (what rule(s) are referenced, etc.) and
168 [make a pull request][prs] if your configuration is supported.
170 **Defaults** if you have all of the relevant ESLint rules disabled (or have
171 ESLint disabled entirely via `/* eslint-disable */` then prettier options will
172 fall back to the `prettier` defaults:
179 trailingComma: 'none',
180 bracketSpacing: true,
183 // prettier-eslint doesn't currently support
184 // inferring these two (Pull Requests welcome):
186 jsxBracketSameLine: false,
194 There is a lot of logging available with `prettier-eslint`. When debugging, you
196 [`logLevel`](#loglevel-enum-trace-debug-info-warn-error-silent)s to get a better
197 idea of what's going on. If you're using `prettier-eslint-cli` then you can use
198 the `--log-level trace`, if you're using [the Atom plugin][atom-plugin], then
199 you can [open the developer tools][atom-dev-tools] and enter:
200 `process.env.LOG_LEVEL = 'trace'` in the console, then run the format. You'll
201 see a bunch of logs that should help you determine whether the problem is
202 `prettier`, `eslint --fix`, how `prettier-eslint` infers your `prettier`
203 options, or any number of other things. You will be asked to do this before
204 filing issues, so please do :smile:
206 > NOTE: When you're doing this, it's recommended that you only run this on a
207 > single file because there are a LOT of logs :)
209 ### eslint-disable-line
211 While using `// eslint-disable-line`, sometimes you may get linting errors after
212 the code has been processed by this module. That is because `prettier` changes
217 if (x) { // eslint-disable-line
225 // eslint-disable-line
229 And the `eslint --fix` wont change it back. You can notice that `// eslint-disable-line` has moved to a new line. To work around this issue, you can
230 use `//eslint-disable-next-line` instead of `// eslint-disable-line` like this:
233 // eslint-disable-next-line
240 - [`prettier`][prettier]
245 None that I'm aware of. Feel free to file a PR if you know of any other
250 - [`prettier-eslint-cli`](https://github.com/prettier/prettier-eslint-cli) -
251 Command Line Interface
252 - [`prettier-atom`][atom-plugin] - Atom plugin (check the "ESlint integration"
253 checkbox in settings)
254 - [`prettier-vscode`][vscode-plugin] - Visual Studio Code plugin (set
255 `prettier.eslintIntegration: true` in settings)
256 - [`eslint-plugin-prettier`](https://github.com/not-an-aardvark/eslint-plugin-prettier) -
257 ESLint plugin. While prettier-eslint uses `eslint --fix` to change the output of `prettier`, eslint-plugin-prettier keeps the `prettier` output as-is and integrates it with the regular ESLint workflow.
258 - [`prettier-eslint-webpack-plugin`](https://github.com/danielterwiel/prettier-eslint-webpack-plugin) -
259 Prettier ESlint Webpack Plugin
263 Thanks goes to these people ([emoji key][emojis]):
265 <!-- ALL-CONTRIBUTORS-LIST:START - Do not remove or modify this section -->
266 <!-- prettier-ignore-start -->
267 <!-- markdownlint-disable -->
270 <td align="center"><a href="https://kentcdodds.com"><img src="https://avatars.githubusercontent.com/u/1500684?v=3?s=100" width="100px;" alt=""/><br /><sub><b>Kent C. Dodds</b></sub></a><br /><a href="https://github.com/prettier/prettier-eslint/commits?author=kentcdodds" title="Code">💻</a> <a href="https://github.com/prettier/prettier-eslint/commits?author=kentcdodds" title="Documentation">📖</a> <a href="#infra-kentcdodds" title="Infrastructure (Hosting, Build-Tools, etc)">🚇</a> <a href="https://github.com/prettier/prettier-eslint/commits?author=kentcdodds" title="Tests">⚠️</a></td>
271 <td align="center"><a href="http://gyandeeps.com"><img src="https://avatars.githubusercontent.com/u/5554486?v=3?s=100" width="100px;" alt=""/><br /><sub><b>Gyandeep Singh</b></sub></a><br /><a href="https://github.com/prettier/prettier-eslint/pulls?q=is%3Apr+reviewed-by%3Agyandeeps" title="Reviewed Pull Requests">👀</a></td>
272 <td align="center"><a href="https://github.com/exdeniz"><img src="https://avatars.githubusercontent.com/u/682584?v=3?s=100" width="100px;" alt=""/><br /><sub><b>Igor Pnev</b></sub></a><br /><a href="https://github.com/prettier/prettier-eslint/issues?q=author%3Aexdeniz" title="Bug reports">🐛</a></td>
273 <td align="center"><a href="https://demoneaux.github.io/"><img src="https://avatars.githubusercontent.com/u/813865?v=3?s=100" width="100px;" alt=""/><br /><sub><b>Benjamin Tan</b></sub></a><br /><a href="#question-demoneaux" title="Answering Questions">💬</a> <a href="https://github.com/prettier/prettier-eslint/pulls?q=is%3Apr+reviewed-by%3Ademoneaux" title="Reviewed Pull Requests">👀</a></td>
274 <td align="center"><a href="https://ericmccormick.io"><img src="https://avatars.githubusercontent.com/u/622118?v=3?s=100" width="100px;" alt=""/><br /><sub><b>Eric McCormick</b></sub></a><br /><a href="https://github.com/prettier/prettier-eslint/commits?author=edm00se" title="Code">💻</a> <a href="https://github.com/prettier/prettier-eslint/commits?author=edm00se" title="Documentation">📖</a> <a href="https://github.com/prettier/prettier-eslint/commits?author=edm00se" title="Tests">⚠️</a></td>
275 <td align="center"><a href="https://github.com/lydell"><img src="https://avatars.githubusercontent.com/u/2142817?v=3?s=100" width="100px;" alt=""/><br /><sub><b>Simon Lydell</b></sub></a><br /><a href="https://github.com/prettier/prettier-eslint/commits?author=lydell" title="Documentation">📖</a></td>
276 <td align="center"><a href="https://github.com/tommck"><img src="https://avatars0.githubusercontent.com/u/981957?v=3?s=100" width="100px;" alt=""/><br /><sub><b>Tom McKearney</b></sub></a><br /><a href="https://github.com/prettier/prettier-eslint/commits?author=tommck" title="Documentation">📖</a> <a href="#example-tommck" title="Examples">💡</a></td>
279 <td align="center"><a href="https://github.com/PAkerstrand"><img src="https://avatars.githubusercontent.com/u/463105?v=3?s=100" width="100px;" alt=""/><br /><sub><b>Patrik Åkerstrand</b></sub></a><br /><a href="https://github.com/prettier/prettier-eslint/commits?author=PAkerstrand" title="Code">💻</a></td>
280 <td align="center"><a href="https://twitter.com/loklaan"><img src="https://avatars.githubusercontent.com/u/1560301?v=3?s=100" width="100px;" alt=""/><br /><sub><b>Lochlan Bunn</b></sub></a><br /><a href="https://github.com/prettier/prettier-eslint/commits?author=loklaan" title="Code">💻</a></td>
281 <td align="center"><a href="https://github.com/danielterwiel"><img src="https://avatars.githubusercontent.com/u/25886902?v=3?s=100" width="100px;" alt=""/><br /><sub><b>Daniël Terwiel</b></sub></a><br /><a href="#plugin-danielterwiel" title="Plugin/utility libraries">🔌</a> <a href="#tool-danielterwiel" title="Tools">🔧</a></td>
282 <td align="center"><a href="https://robinmalfait.com"><img src="https://avatars1.githubusercontent.com/u/1834413?v=3?s=100" width="100px;" alt=""/><br /><sub><b>Robin Malfait</b></sub></a><br /><a href="#tool-RobinMalfait" title="Tools">🔧</a></td>
283 <td align="center"><a href="http://mgmcdermott.com"><img src="https://avatars0.githubusercontent.com/u/8161781?v=3?s=100" width="100px;" alt=""/><br /><sub><b>Michael McDermott</b></sub></a><br /><a href="https://github.com/prettier/prettier-eslint/commits?author=mgmcdermott" title="Code">💻</a></td>
284 <td align="center"><a href="http://sheerun.net"><img src="https://avatars3.githubusercontent.com/u/292365?v=3?s=100" width="100px;" alt=""/><br /><sub><b>Adam Stankiewicz</b></sub></a><br /><a href="https://github.com/prettier/prettier-eslint/commits?author=sheerun" title="Code">💻</a></td>
285 <td align="center"><a href="http://www.stephenjohnsorensen.com/"><img src="https://avatars3.githubusercontent.com/u/487068?v=3?s=100" width="100px;" alt=""/><br /><sub><b>Stephen John Sorensen</b></sub></a><br /><a href="https://github.com/prettier/prettier-eslint/commits?author=spudly" title="Code">💻</a></td>
288 <td align="center"><a href="https://github.com/briandipalma"><img src="https://avatars2.githubusercontent.com/u/1597820?v=3?s=100" width="100px;" alt=""/><br /><sub><b>Brian Di Palma</b></sub></a><br /><a href="https://github.com/prettier/prettier-eslint/issues?q=author%3Abriandipalma" title="Bug reports">🐛</a> <a href="https://github.com/prettier/prettier-eslint/commits?author=briandipalma" title="Code">💻</a></td>
289 <td align="center"><a href="https://robwise.github.io"><img src="https://avatars0.githubusercontent.com/u/6173488?v=3?s=100" width="100px;" alt=""/><br /><sub><b>Rob Wise</b></sub></a><br /><a href="https://github.com/prettier/prettier-eslint/commits?author=robwise" title="Documentation">📖</a> <a href="https://github.com/prettier/prettier-eslint/commits?author=robwise" title="Code">💻</a></td>
290 <td align="center"><a href="https://github.com/Belir"><img src="https://avatars0.githubusercontent.com/u/4818642?v=3?s=100" width="100px;" alt=""/><br /><sub><b>Patryk Peas</b></sub></a><br /><a href="https://github.com/prettier/prettier-eslint/issues?q=author%3ABelir" title="Bug reports">🐛</a> <a href="https://github.com/prettier/prettier-eslint/commits?author=Belir" title="Code">💻</a> <a href="https://github.com/prettier/prettier-eslint/commits?author=Belir" title="Tests">⚠️</a></td>
291 <td align="center"><a href="http://vauxlab.com"><img src="https://avatars2.githubusercontent.com/u/1193520?v=3?s=100" width="100px;" alt=""/><br /><sub><b>Thijs Koerselman</b></sub></a><br /><a href="https://github.com/prettier/prettier-eslint/issues?q=author%3A0x80" title="Bug reports">🐛</a> <a href="https://github.com/prettier/prettier-eslint/commits?author=0x80" title="Code">💻</a> <a href="https://github.com/prettier/prettier-eslint/commits?author=0x80" title="Tests">⚠️</a></td>
292 <td align="center"><a href="https://github.com/enriquecaballero"><img src="https://avatars3.githubusercontent.com/u/7918284?v=3?s=100" width="100px;" alt=""/><br /><sub><b>Enrique Caballero</b></sub></a><br /><a href="https://github.com/prettier/prettier-eslint/issues?q=author%3Aenriquecaballero" title="Bug reports">🐛</a> <a href="https://github.com/prettier/prettier-eslint/commits?author=enriquecaballero" title="Code">💻</a></td>
293 <td align="center"><a href="https://github.com/lukaszmoroz"><img src="https://avatars2.githubusercontent.com/u/1408542?v=3?s=100" width="100px;" alt=""/><br /><sub><b>Łukasz Moroz</b></sub></a><br /><a href="https://github.com/prettier/prettier-eslint/issues?q=author%3Alukaszmoroz" title="Bug reports">🐛</a> <a href="https://github.com/prettier/prettier-eslint/commits?author=lukaszmoroz" title="Tests">⚠️</a></td>
294 <td align="center"><a href="https://github.com/zimme"><img src="https://avatars0.githubusercontent.com/u/1215414?v=3?s=100" width="100px;" alt=""/><br /><sub><b>Simon Fridlund</b></sub></a><br /><a href="#question-zimme" title="Answering Questions">💬</a> <a href="https://github.com/prettier/prettier-eslint/issues?q=author%3Azimme" title="Bug reports">🐛</a> <a href="https://github.com/prettier/prettier-eslint/commits?author=zimme" title="Code">💻</a> <a href="https://github.com/prettier/prettier-eslint/commits?author=zimme" title="Documentation">📖</a> <a href="#example-zimme" title="Examples">💡</a> <a href="#ideas-zimme" title="Ideas, Planning, & Feedback">🤔</a> <a href="#infra-zimme" title="Infrastructure (Hosting, Build-Tools, etc)">🚇</a> <a href="#plugin-zimme" title="Plugin/utility libraries">🔌</a> <a href="https://github.com/prettier/prettier-eslint/pulls?q=is%3Apr+reviewed-by%3Azimme" title="Reviewed Pull Requests">👀</a> <a href="#talk-zimme" title="Talks">📢</a> <a href="https://github.com/prettier/prettier-eslint/commits?author=zimme" title="Tests">⚠️</a> <a href="#tool-zimme" title="Tools">🔧</a> <a href="#tutorial-zimme" title="Tutorials">✅</a></td>
297 <td align="center"><a href="https://oliverjash.me/"><img src="https://avatars1.githubusercontent.com/u/921609?v=3?s=100" width="100px;" alt=""/><br /><sub><b>Oliver Joseph Ash</b></sub></a><br /><a href="https://github.com/prettier/prettier-eslint/issues?q=author%3AOliverJAsh" title="Bug reports">🐛</a> <a href="https://github.com/prettier/prettier-eslint/commits?author=OliverJAsh" title="Code">💻</a></td>
298 <td align="center"><a href="http://palf.co"><img src="https://avatars1.githubusercontent.com/u/3812133?v=3?s=100" width="100px;" alt=""/><br /><sub><b>Mark Palfreeman</b></sub></a><br /><a href="https://github.com/prettier/prettier-eslint/commits?author=markpalfreeman" title="Documentation">📖</a></td>
299 <td align="center"><a href="https://github.com/alexmckenley"><img src="https://avatars1.githubusercontent.com/u/3639670?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Alex Taylor</b></sub></a><br /><a href="https://github.com/prettier/prettier-eslint/commits?author=alexmckenley" title="Code">💻</a> <a href="https://github.com/prettier/prettier-eslint/commits?author=alexmckenley" title="Tests">⚠️</a></td>
300 <td align="center"><a href="https://github.com/chinesedfan"><img src="https://avatars3.githubusercontent.com/u/1736154?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Xianming Zhong</b></sub></a><br /><a href="https://github.com/prettier/prettier-eslint/commits?author=chinesedfan" title="Tests">⚠️</a></td>
301 <td align="center"><a href="https://github.com/lewisl9029"><img src="https://avatars0.githubusercontent.com/u/6934200?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Lewis Liu</b></sub></a><br /><a href="https://github.com/prettier/prettier-eslint/commits?author=lewisl9029" title="Code">💻</a></td>
302 <td align="center"><a href="https://hamidihamza.com"><img src="https://avatars0.githubusercontent.com/u/22576950?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Hamza Hamidi</b></sub></a><br /><a href="https://github.com/prettier/prettier-eslint/commits?author=hamzahamidi" title="Code">💻</a> <a href="#ideas-hamzahamidi" title="Ideas, Planning, & Feedback">🤔</a> <a href="#maintenance-hamzahamidi" title="Maintenance">🚧</a> <a href="#tool-hamzahamidi" title="Tools">🔧</a> <a href="https://github.com/prettier/prettier-eslint/pulls?q=is%3Apr+reviewed-by%3Ahamzahamidi" title="Reviewed Pull Requests">👀</a></td>
303 <td align="center"><a href="https://github.com/iamrajiv"><img src="https://avatars0.githubusercontent.com/u/42106787?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Rajiv Ranjan Singh</b></sub></a><br /><a href="https://github.com/prettier/prettier-eslint/commits?author=iamrajiv" title="Code">💻</a></td>
306 <td align="center"><a href="https://github.com/cy6erskunk"><img src="https://avatars3.githubusercontent.com/u/754849?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Igor</b></sub></a><br /><a href="#maintenance-cy6erskunk" title="Maintenance">🚧</a></td>
310 <!-- markdownlint-restore -->
311 <!-- prettier-ignore-end -->
313 <!-- ALL-CONTRIBUTORS-LIST:END -->
315 This project follows the [all-contributors][all-contributors] specification.
316 Contributions of any kind welcome!
322 [prettier]: https://github.com/jlongster/prettier
323 [eslint]: http://eslint.org/
324 [fix]: http://eslint.org/docs/user-guide/command-line-interface#fix
325 [npm]: https://www.npmjs.com/
326 [node]: https://nodejs.org
327 [build-badge]: https://img.shields.io/travis/prettier/prettier-eslint.svg?style=flat-square
328 [build]: https://travis-ci.org/prettier/prettier-eslint
329 [coverage-badge]: https://img.shields.io/codecov/c/github/prettier/prettier-eslint.svg?style=flat-square
330 [coverage]: https://codecov.io/github/prettier/prettier-eslint
331 [version-badge]: https://img.shields.io/npm/v/prettier-eslint.svg?style=flat-square
332 [package]: https://www.npmjs.com/package/prettier-eslint
333 [downloads-badge]: https://img.shields.io/npm/dm/prettier-eslint.svg?style=flat-square
334 [npm-stat]: http://npm-stat.com/charts.html?package=prettier-eslint&from=2016-04-01
335 [license-badge]: https://img.shields.io/npm/l/prettier-eslint.svg?style=flat-square
336 [license]: https://github.com/prettier/prettier-eslint/blob/master/other/LICENSE
337 [prs-badge]: https://img.shields.io/badge/PRs-welcome-brightgreen.svg?style=flat-square
338 [prs]: http://makeapullrequest.com
339 [donate-badge]: https://img.shields.io/badge/$-support-green.svg?style=flat-square
340 [donate]: https://www.paypal.me/zimme
341 [coc-badge]: https://img.shields.io/badge/code%20of-conduct-ff69b4.svg?style=flat-square
342 [coc]: https://github.com/prettier/prettier-eslint/blob/master/other/CODE_OF_CONDUCT.md
343 [roadmap-badge]: https://img.shields.io/badge/%F0%9F%93%94-roadmap-CD9523.svg?style=flat-square
344 [roadmap]: https://github.com/prettier/prettier-eslint/blob/master/other/ROADMAP.md
345 [examples-badge]: https://img.shields.io/badge/%F0%9F%92%A1-examples-8C8E93.svg?style=flat-square
346 [examples]: https://github.com/prettier/prettier-eslint/blob/master/other/EXAMPLES.md
347 [github-watch-badge]: https://img.shields.io/github/watchers/prettier/prettier-eslint.svg?style=social
348 [github-watch]: https://github.com/prettier/prettier-eslint/watchers
349 [github-star-badge]: https://img.shields.io/github/stars/prettier/prettier-eslint.svg?style=social
350 [github-star]: https://github.com/prettier/prettier-eslint/stargazers
351 [twitter]: https://twitter.com/intent/tweet?text=Check%20out%20prettier-eslint!%20https://github.com/prettier/prettier-eslint%20%F0%9F%91%8D
352 [twitter-badge]: https://img.shields.io/twitter/url/https/github.com/prettier/prettier-eslint.svg?style=social
353 [emojis]: https://github.com/kentcdodds/all-contributors#emoji-key
354 [all-contributors]: https://github.com/kentcdodds/all-contributors
355 [atom-plugin]: https://github.com/prettier/prettier-atom
356 [atom-dev-tools]: https://discuss.atom.io/t/how-to-make-developer-tools-appear/16232
357 [vscode-plugin]: https://github.com/esbenp/prettier-vscode