Skip to content

Conversation

silvenon
Copy link
Contributor

@silvenon silvenon commented May 7, 2025

In the case when a flat config has no rules defined, the resolved config for a file is undefined.

// eslint.config.js
export default [{}]

This causes the CLI utility to fail to destructure rules out of it:

❯ npx eslint-config-prettier src/utils/toast.tsx
Cannot destructure property 'rules' of 'undefined' as it is undefined.

and it's also necessary to initialize rules as well, because Object.entries(undefined) is an error.

This will achieve the same behavior as a legacy configuration:

// .eslintrc.cjs
module.exports = {}
❯ npx eslint-config-prettier src/utils/toast.tsx
No rules that are unnecessary or conflict with Prettier were found.

Fixes #288.


Important

Fixes CLI crash in bin/cli.js by setting default rules = {} for flat configs with no rules, ensuring consistent behavior with legacy configurations.

  • Behavior:
    • Fixes CLI utility crash in bin/cli.js when flat config has no rules defined by setting default rules = {} during destructuring.
    • Ensures consistent behavior with legacy configuration by outputting "No rules that are unnecessary or conflict with Prettier were found." when no rules are present.
  • Misc:

This description was created by Ellipsis for 0b82629. You can customize this summary. It will automatically update as commits are pushed.

Summary by CodeRabbit

Summary by CodeRabbit

  • Bug Fixes
    • Improved stability by preventing potential errors when configuration objects or their properties are missing.
    • Ensured the CLI runs smoothly even with empty or missing configuration files.

In flat config the resolved config is "undefined" for files that don't
have any configuration, which caused an error in the CLI utility, unlike
in legacy ESLint configuration where the empty resolved configuration is
an empty object with an empty "rules: {}".
Copy link

changeset-bot bot commented May 7, 2025

🦋 Changeset detected

Latest commit: cd29dcb

The changes in this PR will be included in the next version bump.

This PR includes changesets to release 1 package
Name Type
eslint-config-prettier Patch

Not sure what this means? Click here to learn what changesets are.

Click here if you're a maintainer who wants to add another changeset to this PR

Copy link

coderabbitai bot commented May 7, 2025

Walkthrough

The change updates the destructuring of the rules property from configuration objects within the CLI script. It now safely handles cases where the configuration object or its rules property might be undefined by providing default empty objects, preventing runtime errors when accessing rules on undefined configurations. A new test verifies the CLI runs without error when given an empty config.

Changes

File(s) Change Summary
bin/cli.js Modified destructuring of rules from config objects to provide default empty objects for safety.
test/cli.test.js Added a test case "empty config" that runs the CLI against an empty config fixture to ensure no runtime error.
test/fixtures/empty-config/eslint.config.mjs Added a new empty ESLint config exporting a default array with a single empty object.
.changeset/lazy-dingos-cheat.md Added a changeset documenting a patch update fixing CLI crash when no rules are configured.

Assessment against linked issues

Objective Addressed Explanation
Handle undefined computed config in CLI, ensuring no runtime failure (#288)

Poem

A hop and a skip, with configs in tow,
No more undefined, the errors won't show.
With empty objects, we safely proceed,
The CLI now handles each config's need.
🐇✨ Bugs are out, and all is right—
Hopping along with code so bright!

Tip

⚡️ Faster reviews with caching
  • CodeRabbit now supports caching for code and dependencies, helping speed up reviews. This means quicker feedback, reduced wait times, and a smoother review experience overall. Cached data is encrypted and stored securely. This feature will be automatically enabled for all accounts on May 16th. To opt out, configure Review - Disable Cache at either the organization or repository level. If you prefer to disable all data retention across your organization, simply turn off the Data Retention setting under your Organization Settings.

Enjoy the performance boost—your workflow just got faster.


📜 Recent review details

Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between baa5e3d and cd29dcb.

📒 Files selected for processing (1)
  • .changeset/lazy-dingos-cheat.md (1 hunks)
✅ Files skipped from review due to trivial changes (1)
  • .changeset/lazy-dingos-cheat.md
⏰ Context from checks skipped due to timeout of 90000ms (3)
  • GitHub Check: Test on windows-latest with Node.js 22
  • GitHub Check: Test on windows-latest with Node.js 18
  • GitHub Check: Test on windows-latest with Node.js 16

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share
🪧 Tips

Chat

There are 3 ways to chat with CodeRabbit:

  • Review comments: Directly reply to a review comment made by CodeRabbit. Example:
    • I pushed a fix in commit <commit_id>, please review it.
    • Generate unit testing code for this file.
    • Open a follow-up GitHub issue for this discussion.
  • Files and specific lines of code (under the "Files changed" tab): Tag @coderabbitai in a new review comment at the desired location with your query. Examples:
    • @coderabbitai generate unit testing code for this file.
    • @coderabbitai modularize this function.
  • PR comments: Tag @coderabbitai in a new PR comment to ask questions about the PR branch. For the best results, please provide a very specific query, as very limited context is provided in this mode. Examples:
    • @coderabbitai gather interesting stats about this repository and render them as a table. Additionally, render a pie chart showing the language distribution in the codebase.
    • @coderabbitai read src/utils.ts and generate unit testing code.
    • @coderabbitai read the files in the src/scheduler package and generate a class diagram using mermaid and a README in the markdown format.
    • @coderabbitai help me debug CodeRabbit configuration file.

Support

Need help? Create a ticket on our support page for assistance with any issues or questions.

Note: Be mindful of the bot's finite context window. It's strongly recommended to break down tasks such as reading entire modules into smaller chunks. For a focused discussion, use review comments to chat about specific files and their changes, instead of using the PR comments.

CodeRabbit Commands (Invoked using PR comments)

  • @coderabbitai pause to pause the reviews on a PR.
  • @coderabbitai resume to resume the paused reviews.
  • @coderabbitai review to trigger an incremental review. This is useful when automatic reviews are disabled for the repository.
  • @coderabbitai full review to do a full review from scratch and review all the files again.
  • @coderabbitai summary to regenerate the summary of the PR.
  • @coderabbitai generate docstrings to generate docstrings for this PR.
  • @coderabbitai generate sequence diagram to generate a sequence diagram of the changes in this PR.
  • @coderabbitai resolve resolve all the CodeRabbit review comments.
  • @coderabbitai configuration to show the current CodeRabbit configuration for the repository.
  • @coderabbitai help to get help.

Other keywords and placeholders

  • Add @coderabbitai ignore anywhere in the PR description to prevent this PR from being reviewed.
  • Add @coderabbitai summary to generate the high-level summary at a specific location in the PR description.
  • Add @coderabbitai anywhere in the PR title to generate the title automatically.

CodeRabbit Configuration File (.coderabbit.yaml)

  • You can programmatically configure CodeRabbit by adding a .coderabbit.yaml file to the root of your repository.
  • Please see the configuration documentation for more information.
  • If your editor has YAML language server enabled, you can add the path at the top of this file to enable auto-completion and validation: # yaml-language-server: $schema=https://coderabbit.ai/integrations/schema.v2.json

Documentation and Community

  • Visit our Documentation for detailed information on how to use CodeRabbit.
  • Join our Discord Community to get help, request features, and share feedback.
  • Follow us on X/Twitter for updates and announcements.

Copy link

@ellipsis-dev ellipsis-dev bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Important

Looks good to me! 👍

Reviewed everything up to 0b82629 in 30 seconds. Click for details.
  • Reviewed 13 lines of code in 1 files
  • Skipped 0 files when reviewing.
  • Skipped posting 2 draft comments. View those below.
  • Modify your settings and rules to customize what types of comments Ellipsis leaves. And don't forget to react with 👍 or 👎 to teach Ellipsis.
1. bin/cli.js:63
  • Draft comment:
    Good use of destructuring with a default. This change ensures that if a config is undefined, 'rules' defaults to an empty object, avoiding errors when calling Object.entries().
  • Reason this comment was not posted:
    Confidence changes required: 0% <= threshold 50% None
2. bin/cli.js:63
  • Draft comment:
    Good fix: defaulting 'rules' to {} prevents the destructuring error. Consider adding an inline comment referencing issue #288 to document why we use this fallback.
  • Reason this comment was not posted:
    Confidence changes required: 0% <= threshold 50% None

Workflow ID: wflow_p2ecqH4CC3QoYznk

You can customize Ellipsis by changing your verbosity settings, reacting with 👍 or 👎, replying to comments, or adding code review rules.

@silvenon
Copy link
Contributor Author

silvenon commented May 7, 2025

I didn't find an (easy) way to incorporate this into tests, I would probably have to mock config files, not sure if it's worth it. Let me know if I missed something.

@JounQin
Copy link
Member

JounQin commented May 7, 2025

I didn't find an (easy) way to incorporate this into tests, I would probably have to mock config files, not sure if it's worth it. Let me know if I missed something.

An e2e test case could be added? And some comments could be added at least.

@silvenon
Copy link
Contributor Author

silvenon commented May 8, 2025

Since running the CLI doesn't allow me to specify the config, what kind of an E2E test did you have in mind? What I can do is pass a non-JS file like foo. Legacy configs will still give those the their default config when running npx eslint --print-config foo, while flat configs will be much more strict and apply only to JS extensions.

It would pick up your project's eslint.config.js, but it would still output undefined, which is what's needed. Would that be good enough?

@JounQin
Copy link
Member

JounQin commented May 8, 2025

exec in custom fixture cwd?

@silvenon
Copy link
Contributor Author

silvenon commented May 8, 2025

Great idea, done ✅

Copy link

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 0

🧹 Nitpick comments (1)
test/cli.test.js (1)

81-87: Good addition of a test case for empty config scenario.

This test effectively verifies that the CLI doesn't crash when encountering an empty configuration, which directly addresses issue #288 mentioned in the PR objectives. The test runs the CLI script as a child process against a fixture with an empty config and implicitly checks that no error occurs.

A few suggestions to strengthen this test:

  1. Consider asserting the expected CLI output (should be "No rules that are unnecessary or conflict with Prettier were found.")
  2. Add a comment explaining what the test is checking and its relationship to issue #288
test("empty config", (done) => {
+  // Verifies that the CLI doesn't crash with empty configs (issue #288)
+  // The fixture contains an eslint.config.mjs that exports [{}]
  childProcess.exec(
    `node ${path.join(process.cwd(), "bin/cli.js")} index.js`,
    { cwd: path.join(__dirname, "fixtures/empty-config") },
-    done
+    (error, stdout) => {
+      expect(error).toBeNull();
+      expect(stdout.trim()).toBe("No rules that are unnecessary or conflict with Prettier were found.");
+      done();
+    }
  );
});
📜 Review details

Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 0b82629 and 2dc0061.

📒 Files selected for processing (3)
  • bin/cli.js (1 hunks)
  • test/cli.test.js (2 hunks)
  • test/fixtures/empty-config/eslint.config.mjs (1 hunks)
✅ Files skipped from review due to trivial changes (1)
  • test/fixtures/empty-config/eslint.config.mjs
🚧 Files skipped from review as they are similar to previous changes (1)
  • bin/cli.js
⏰ Context from checks skipped due to timeout of 90000ms (4)
  • GitHub Check: Test on windows-latest with Node.js 22
  • GitHub Check: Test on windows-latest with Node.js 20
  • GitHub Check: Test on windows-latest with Node.js 18
  • GitHub Check: Test on windows-latest with Node.js 16

@JounQin JounQin changed the title [CLI]: Fix case in flat config when a file doesn't have any rules configured fix(cli): do not crash on no rules configured May 9, 2025
@JounQin JounQin requested a review from Copilot May 9, 2025 01:59
Copy link

@Copilot Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copilot encountered an error and was unable to review this pull request. You can try again by re-requesting a review.

@JounQin JounQin requested a review from Copilot May 9, 2025 02:01
Copy link

@Copilot Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull Request Overview

This PR fixes a bug in the CLI where an empty flat configuration (i.e., one with no rules specified) mistakenly caused a crash.

  • Fixes CLI crash by defaulting missing rules to an empty object
  • Adds a test to verify CLI behavior with an empty configuration
  • Updates changeset metadata for the patch release

Reviewed Changes

Copilot reviewed 5 out of 5 changed files in this pull request and generated no comments.

File Description
test/fixtures/empty-config/eslint.config.mjs Provides an empty configuration for testing
test/cli.test.js Adds a test verifying the CLI does not crash with empty config
.changeset/lazy-dingos-cheat.md Documents the patch release for this bug fix
Comments suppressed due to low confidence (1)

test/cli.test.js:82

  • Consider asserting the output message or exit code in the empty config test to ensure that the CLI behavior matches the expected "No rules that are unnecessary or conflict with Prettier were found." message.
test("empty config", (done) => {

@JounQin JounQin merged commit 94b4799 into prettier:main May 9, 2025
14 checks passed
@silvenon silvenon deleted the handle-empty-flat-config branch May 9, 2025 07:32
renovate bot added a commit to andrei-picus-tink/auto-renovate that referenced this pull request May 10, 2025
| datasource | package                | from   | to     |
| ---------- | ---------------------- | ------ | ------ |
| npm        | eslint-config-prettier | 10.1.1 | 10.1.5 |


## [v10.1.5](https://github.com/prettier/eslint-config-prettier/blob/HEAD/CHANGELOG.md#1015)

##### Patch Changes

-   [#332](prettier/eslint-config-prettier#332) [`60fef02`](prettier/eslint-config-prettier@60fef02) Thanks [@JounQin](https://github.com/JounQin)! - chore: add `funding` field into `package.json`


## [v10.1.4](https://github.com/prettier/eslint-config-prettier/blob/HEAD/CHANGELOG.md#1014)

##### Patch Changes

-   [#328](prettier/eslint-config-prettier#328) [`94b4799`](prettier/eslint-config-prettier@94b4799) Thanks [@silvenon](https://github.com/silvenon)! - fix(cli): do not crash on no rules configured


## [v10.1.3](https://github.com/prettier/eslint-config-prettier/blob/HEAD/CHANGELOG.md#1013)

##### Patch Changes

-   [#325](prettier/eslint-config-prettier#325) [`4e95a1d`](prettier/eslint-config-prettier@4e95a1d) Thanks [@pilikan](https://github.com/pilikan)! - fix: this package is `commonjs`, align its types correctly


## [v10.1.2](https://github.com/prettier/eslint-config-prettier/blob/HEAD/CHANGELOG.md#1012)

##### Patch Changes

-   [#321](prettier/eslint-config-prettier#321) [`a8768bf`](prettier/eslint-config-prettier@a8768bf) Thanks [@Fdawgs](https://github.com/Fdawgs)! - chore(package): add homepage for some 3rd-party registry - see [#321](prettier/eslint-config-prettier#321) for more details
renovate bot added a commit to andrei-picus-tink/auto-renovate that referenced this pull request May 10, 2025
| datasource | package                | from   | to     |
| ---------- | ---------------------- | ------ | ------ |
| npm        | eslint-config-prettier | 10.1.1 | 10.1.5 |


## [v10.1.5](https://github.com/prettier/eslint-config-prettier/blob/HEAD/CHANGELOG.md#1015)

##### Patch Changes

-   [#332](prettier/eslint-config-prettier#332) [`60fef02`](prettier/eslint-config-prettier@60fef02) Thanks [@JounQin](https://github.com/JounQin)! - chore: add `funding` field into `package.json`


## [v10.1.4](https://github.com/prettier/eslint-config-prettier/blob/HEAD/CHANGELOG.md#1014)

##### Patch Changes

-   [#328](prettier/eslint-config-prettier#328) [`94b4799`](prettier/eslint-config-prettier@94b4799) Thanks [@silvenon](https://github.com/silvenon)! - fix(cli): do not crash on no rules configured


## [v10.1.3](https://github.com/prettier/eslint-config-prettier/blob/HEAD/CHANGELOG.md#1013)

##### Patch Changes

-   [#325](prettier/eslint-config-prettier#325) [`4e95a1d`](prettier/eslint-config-prettier@4e95a1d) Thanks [@pilikan](https://github.com/pilikan)! - fix: this package is `commonjs`, align its types correctly


## [v10.1.2](https://github.com/prettier/eslint-config-prettier/blob/HEAD/CHANGELOG.md#1012)

##### Patch Changes

-   [#321](prettier/eslint-config-prettier#321) [`a8768bf`](prettier/eslint-config-prettier@a8768bf) Thanks [@Fdawgs](https://github.com/Fdawgs)! - chore(package): add homepage for some 3rd-party registry - see [#321](prettier/eslint-config-prettier#321) for more details
renovate bot added a commit to andrei-picus-tink/auto-renovate that referenced this pull request May 11, 2025
| datasource | package                | from   | to     |
| ---------- | ---------------------- | ------ | ------ |
| npm        | eslint-config-prettier | 10.1.1 | 10.1.5 |


## [v10.1.5](https://github.com/prettier/eslint-config-prettier/blob/HEAD/CHANGELOG.md#1015)

##### Patch Changes

-   [#332](prettier/eslint-config-prettier#332) [`60fef02`](prettier/eslint-config-prettier@60fef02) Thanks [@JounQin](https://github.com/JounQin)! - chore: add `funding` field into `package.json`


## [v10.1.4](https://github.com/prettier/eslint-config-prettier/blob/HEAD/CHANGELOG.md#1014)

##### Patch Changes

-   [#328](prettier/eslint-config-prettier#328) [`94b4799`](prettier/eslint-config-prettier@94b4799) Thanks [@silvenon](https://github.com/silvenon)! - fix(cli): do not crash on no rules configured


## [v10.1.3](https://github.com/prettier/eslint-config-prettier/blob/HEAD/CHANGELOG.md#1013)

##### Patch Changes

-   [#325](prettier/eslint-config-prettier#325) [`4e95a1d`](prettier/eslint-config-prettier@4e95a1d) Thanks [@pilikan](https://github.com/pilikan)! - fix: this package is `commonjs`, align its types correctly


## [v10.1.2](https://github.com/prettier/eslint-config-prettier/blob/HEAD/CHANGELOG.md#1012)

##### Patch Changes

-   [#321](prettier/eslint-config-prettier#321) [`a8768bf`](prettier/eslint-config-prettier@a8768bf) Thanks [@Fdawgs](https://github.com/Fdawgs)! - chore(package): add homepage for some 3rd-party registry - see [#321](prettier/eslint-config-prettier#321) for more details
renovate bot added a commit to andrei-picus-tink/auto-renovate that referenced this pull request May 17, 2025
| datasource | package                | from   | to     |
| ---------- | ---------------------- | ------ | ------ |
| npm        | eslint-config-prettier | 10.1.1 | 10.1.5 |


## [v10.1.5](https://github.com/prettier/eslint-config-prettier/blob/HEAD/CHANGELOG.md#1015)

##### Patch Changes

-   [#332](prettier/eslint-config-prettier#332) [`60fef02`](prettier/eslint-config-prettier@60fef02) Thanks [@JounQin](https://github.com/JounQin)! - chore: add `funding` field into `package.json`


## [v10.1.4](https://github.com/prettier/eslint-config-prettier/blob/HEAD/CHANGELOG.md#1014)

##### Patch Changes

-   [#328](prettier/eslint-config-prettier#328) [`94b4799`](prettier/eslint-config-prettier@94b4799) Thanks [@silvenon](https://github.com/silvenon)! - fix(cli): do not crash on no rules configured


## [v10.1.3](https://github.com/prettier/eslint-config-prettier/blob/HEAD/CHANGELOG.md#1013)

##### Patch Changes

-   [#325](prettier/eslint-config-prettier#325) [`4e95a1d`](prettier/eslint-config-prettier@4e95a1d) Thanks [@pilikan](https://github.com/pilikan)! - fix: this package is `commonjs`, align its types correctly


## [v10.1.2](https://github.com/prettier/eslint-config-prettier/blob/HEAD/CHANGELOG.md#1012)

##### Patch Changes

-   [#321](prettier/eslint-config-prettier#321) [`a8768bf`](prettier/eslint-config-prettier@a8768bf) Thanks [@Fdawgs](https://github.com/Fdawgs)! - chore(package): add homepage for some 3rd-party registry - see [#321](prettier/eslint-config-prettier#321) for more details
renovate bot added a commit to andrei-picus-tink/auto-renovate that referenced this pull request May 18, 2025
| datasource | package                | from   | to     |
| ---------- | ---------------------- | ------ | ------ |
| npm        | eslint-config-prettier | 10.1.1 | 10.1.5 |


## [v10.1.5](https://github.com/prettier/eslint-config-prettier/blob/HEAD/CHANGELOG.md#1015)

##### Patch Changes

-   [#332](prettier/eslint-config-prettier#332) [`60fef02`](prettier/eslint-config-prettier@60fef02) Thanks [@JounQin](https://github.com/JounQin)! - chore: add `funding` field into `package.json`


## [v10.1.4](https://github.com/prettier/eslint-config-prettier/blob/HEAD/CHANGELOG.md#1014)

##### Patch Changes

-   [#328](prettier/eslint-config-prettier#328) [`94b4799`](prettier/eslint-config-prettier@94b4799) Thanks [@silvenon](https://github.com/silvenon)! - fix(cli): do not crash on no rules configured


## [v10.1.3](https://github.com/prettier/eslint-config-prettier/blob/HEAD/CHANGELOG.md#1013)

##### Patch Changes

-   [#325](prettier/eslint-config-prettier#325) [`4e95a1d`](prettier/eslint-config-prettier@4e95a1d) Thanks [@pilikan](https://github.com/pilikan)! - fix: this package is `commonjs`, align its types correctly


## [v10.1.2](https://github.com/prettier/eslint-config-prettier/blob/HEAD/CHANGELOG.md#1012)

##### Patch Changes

-   [#321](prettier/eslint-config-prettier#321) [`a8768bf`](prettier/eslint-config-prettier@a8768bf) Thanks [@Fdawgs](https://github.com/Fdawgs)! - chore(package): add homepage for some 3rd-party registry - see [#321](prettier/eslint-config-prettier#321) for more details
renovate bot added a commit to andrei-picus-tink/auto-renovate that referenced this pull request Sep 2, 2025
| datasource | package                | from   | to     |
| ---------- | ---------------------- | ------ | ------ |
| npm        | eslint-config-prettier | 10.1.5 | 10.1.8 |


## [v10.1.8](https://github.com/prettier/eslint-config-prettier/releases/tag/v10.1.8)

### eslint-config-prettier

#### 10.1.5

##### Patch Changes

- [#332](prettier/eslint-config-prettier#332) [`60fef02`](prettier/eslint-config-prettier@60fef02) Thanks [@JounQin](https://github.com/JounQin)! - chore: add `funding` field into `package.json`

#### 10.1.4

##### Patch Changes

- [#328](prettier/eslint-config-prettier#328) [`94b4799`](prettier/eslint-config-prettier@94b4799) Thanks [@silvenon](https://github.com/silvenon)! - fix(cli): do not crash on no rules configured

#### 10.1.3

##### Patch Changes

- [#325](prettier/eslint-config-prettier#325) [`4e95a1d`](prettier/eslint-config-prettier@4e95a1d) Thanks [@pilikan](https://github.com/pilikan)! - fix: this package is `commonjs`, align its types correctly

#### 10.1.2

##### Patch Changes

- [#321](prettier/eslint-config-prettier#321) [`a8768bf`](prettier/eslint-config-prettier@a8768bf) Thanks [@Fdawgs](https://github.com/Fdawgs)! - chore(package): add homepage for some 3rd-party registry - see [#321](prettier/eslint-config-prettier#321) for more details

#### 10.1.1

##### Patch Changes

- [#309](prettier/eslint-config-prettier#309) [`eb56a5e`](prettier/eslint-config-prettier@eb56a5e) Thanks [@JounQin](https://github.com/JounQin)! - fix: separate the `/flat` entry for compatibility

  For flat config users, the previous `"eslint-config-prettier"` entry still works, but `"eslint-config-prettier/flat"` adds a new `name` property for [config-inspector](https://eslint.org/blog/2024/04/eslint-config-inspector/), we just can't add it for the default entry for compatibility.

  See also [#308](prettier/eslint-config-prettier#308)

  ```ts
  // before
  import eslintConfigPrettier from "eslint-config-prettier";

  // after
  import eslintConfigPrettier from "eslint-config-prettier/flat";
  ```

#### 10.1.0

##### Minor Changes

- [#306](prettier/eslint-config-prettier#306) [`56e2e34`](prettier/eslint-config-prettier@56e2e34) Thanks [@JounQin](https://github.com/JounQin)! - feat: migrate to exports field

#### 10.0.3

##### Patch Changes

- [#294](prettier/eslint-config-prettier#294) [`8dbbd6d`](prettier/eslint-config-prettier@8dbbd6d) Thanks [@FloEdelmann](https://github.com/FloEdelmann)! - feat: add name to config

- [#280](prettier/eslint-config-prettier#280) [`cba5737`](prettier/eslint-config-prettier@cba5737) Thanks [@zanminkian](https://github.com/zanminkian)! - feat: add declaration file

#### 10.0.2

##### Patch Changes

- [#299](prettier/eslint-config-prettier#299) [`e750edc`](prettier/eslint-config-prettier@e750edc) Thanks [@Fdawgs](https://github.com/Fdawgs)! - chore(package): explicitly declare js module type

#### 10.0.0

##### Major Changes

- [#272](prettier/eslint-config-prettier#272) [`5be64be`](prettier/eslint-config-prettier@5be64be) Thanks [@abrahamguo](https://github.com/abrahamguo)! - add support for [@Stylistic](https://github.com/stylistic) formatting rules

#### Versions before 10.0.0

##### Version 9.1.0 (2023-12-02)

- Added: [unicorn/template-indent], (as a [special rule][unicorn/template-indent-special]). Thanks to Gürgün Dayıoğlu ([@gurgunday](https://github.com/gurgunday))!
- Changed: All the [formatting rules that were deprecated in ESLint 8.53.0][deprecated-8.53.0] are now excluded if you set the `ESLINT_CONFIG_PRETTIER_NO_DEPRECATED` environment variable.

##### Version 9.0.0 (2023-08-05)

- Added: The CLI helper tool now works with eslint.config.js (flat config). Just like ESLint itself, the CLI tool automatically first tries eslint.config.js and then eslintrc, and you can force which one to use by setting the [ESLINT\_USE\_FLAT\_CONFIG][ESLINT_USE_FLAT_CONFIG] environment variable. Note that the *config* of eslint-config-prettier has always been compatible with eslint.config.js (flat config) – it was just the CLI tool that needed updating. On top of that, the docs have been updated to mention how to use both eslint.config.js (flat config) and eslintrc, and the tests now test both config systems.
- Changed: [unicode-bom] is no longer turned off. Prettier preserves the BOM if you have one, and does not add one if missing. It was wrong of eslint-config-prettier to disable that rule. If you get ESLint errors after upgrading, either add `"unicode-bom": "off"` to your config to disable it again, or run ESLint with `--fix` to fix all files according to the rule (add or remove BOM). Thanks to Nicolas Stepien ([@nstepien](https://github.com/nstepien))!

##### Version 8.10.0 (2023-08-03)

- Added: [max-statements-per-line]. Thanks to [@Zamiell](https://github.com/Zamiell)!

##### Version 8.9.0 (2023-07-27)

- Added: [vue/array-element-newline]. Thanks to [@xcatliu](https://github.com/xcatliu)!

##### Version 8.8.0 (2023-03-20)

- Added: [@typescript-eslint/lines-around-comment]. Thanks to [@ttionya](https://github.com/ttionya)!

##### Version 8.7.0 (2023-03-06)

- Added: [@typescript-eslint/block-spacing]. Thanks to [@ttionya](https://github.com/ttionya)!
- Added: [@typescript-eslint/key-spacing]. Thanks to [@ttionya](https://github.com/ttionya)!

##### Version 8.6.0 (2023-01-02)

- Added: [vue/multiline-ternary]. Thanks to [@xcatliu](https://github.com/xcatliu)!

##### Version 8.5.0 (2022-03-02)

- Added: [@typescript-eslint/space-before-blocks]. Thanks to Masafumi Koba ([@ybiquitous](https://github.com/ybiquitous))!

##### Version 8.4.0 (2022-02-19)

- Added: [vue/quote-props]. Thanks to [@xcatliu](https://github.com/xcatliu)!

##### Version 8.3.0 (2021-04-24)

- Added: Support for [@babel/eslint-plugin]. Thanks to Chip Zhang ([@ChipZhang](https://github.com/ChipZhang)) for the heads-up! ([eslint-plugin-babel] is still supported, too.)

##### Version 8.2.0 (2021-04-13)

- Added: [flowtype/quotes]. Thanks to Martin Zlámal ([@mrtnzlml](https://github.com/mrtnzlml))!

##### Version 8.1.0 (2021-02-24)

- Added: [flowtype/object-type-curly-spacing].
- Added: Dummy files for the configs removed in 8.0.0. The dummy files throw an error that try to guide you how to upgrade.

##### Version 8.0.0 (2021-02-21)

- Changed: All configs have been merged into one!

  To upgrade, change:

  ```json
  {
    "extends": [
      "some-other-config-you-use",
      "prettier",
      "prettier/@typescript-eslint",
      "prettier/babel",
      "prettier/flowtype",
      "prettier/react",
      "prettier/standard",
      "prettier/unicorn",
      "prettier/vue"
    ]
  }
  ```

  Into:

  <!-- prettier-ignore -->

  ```json
  {
    "extends": [
      "some-other-config-you-use",
      "prettier"
    ]
  }
  ```

  The `"prettier"` config now includes not just ESLint core rules, but also rules from all plugins. Much simpler!

  So … what’s the catch? Why haven’t we done this earlier? Turns out it’s just a sad mistake. I ([@lydell](https://github.com/lydell)) was confused when testing, and thought that turning off unknown rules in a config was an error. Thanks to Georgii Dolzhykov ([@thorn0](https://github.com/thorn0)) for pointing this out!

  If you use [eslint-plugin-prettier], all you need is [plugin:prettier/recommended]:

  <!-- prettier-ignore -->

  ```json
  {
    "extends": [
      "some-other-config-you-use",
      "plugin:prettier/recommended"
    ]
  }
  ```

  (The ["prettier/prettier" config][prettier-prettier-config] still exists separately. It’s the odd one out. The main `"prettier"` config does *not* include the rules from it.)

- Changed: The CLI helper tool now only prints warnings for [arrow-body-style] and [prefer-arrow-callback], just like other “special rules.” This means that if you’ve decided to use those rules and [eslint-plugin-prettier] at the same time, you’ll get warnings but exit code zero (success).

##### Version 7.2.0 (2021-01-18)

- Added: [@typescript-eslint/object-curly-spacing].
- Added: [react/jsx-newline].

##### Version 7.1.0 (2020-12-19)

- Added: [unicorn/empty-brace-spaces]. Thanks to fisker Cheung ([@fisker](https://github.com/fisker))!

##### Version 7.0.0 (2020-12-05)

- Changed: At least ESLint 7.0.0 is now required.

- Changed: [arrow-body-style] and [prefer-arrow-callback] are no longer turned off by default. They only need to be turned off if you use [eslint-plugin-prettier]. If you do, add `"prettier/prettier"` to your `"extends"` array to turn them off again.

  ```json
  {
    "extends": ["prettier", "prettier/prettier"],
    "plugins": ["prettier"],
    "rules": {
      "prettier/prettier": "error"
    }
  }
  ```

  Alternatively, update [eslint-plugin-prettier] to version 3.2.0 or later which automatically turns off these two rules in its `"plugin:prettier/recommended"` config.

  The CLI helper tool only warns about these rules if you have the `"prettier/prettier"` *rule* enabled for a file.

- Changed: `no-tabs` is now a validatable rule. If you use it, you should enable `allowIndentationTabs` so that the rule works regardless of your Prettier config:

  ```json
  {
    "rules": {
      "no-tabs": ["error", { "allowIndentationTabs": true }]
    }
  }
  ```

- Changed: The CLI helper tool is now called just `eslint-config-prettier` instead of `eslint-config-prettier-check`. This is so that `npx eslint-config-prettier` always works regardless of whether you have already installed `eslint-config-prettier` or not: If you have, the local installation is used; if you haven’t, `npx` downloads a temporary copy.

- Changed: The CLI helper tool no longer requires you to pipe the output of `eslint --print-config` to it. Instead, it does that automatically for you via ESLint API:s added in ESLint v7.

  Before:

  ```
  npx eslint --print-config index.js | npx eslint-config-prettier-check
  ```

  After:

  ```
  npx eslint-config-prettier index.js
  ```

- Improved: The npm package is now 75% smaller.

##### Version 6.15.0 (2020-10-27)

- Added: [@typescript-eslint/space-infix-ops]. Thanks to Masafumi Koba ([@ybiquitous](https://github.com/ybiquitous))!

##### Version 6.14.0 (2020-10-21)

- Added: New [eslint-plugin-vue] rules: \[vue/array-bracket-newline] and \[vue/block-tag-newline]. Thanks to [@xcatliu](https://github.com/xcatliu)!

##### Version 6.13.0 (2020-10-16)

- Added: New rules in [eslint-plugin-vue] 7.0 (which supports Vue 3.0). Thanks to [@xcatliu](https://github.com/xcatliu)!

##### Version 6.12.0 (2020-09-25)

- Added: [@typescript-eslint/comma-dangle]. Thanks to Masafumi Koba ([@ybiquitous](https://github.com/ybiquitous))!

##### Version 6.11.0 (2020-04-21)

- Added: [@typescript-eslint/keyword-spacing]. Thanks to Hans Bergren ([@hbergren](https://github.com/hbergren))!

##### Version 6.10.1 (2020-03-22)

- Improved: Recommend using `npx` when running the CLI helper tool.
- Updated: Mention that eslint-config-prettier has been tested with Prettier 2.0 and the latest versions of plugins.

##### Version 6.10.0 (2020-01-28)

- Added: [@typescript-eslint/comma-spacing]. Thanks to Masafumi Koba ([@ybiquitous](https://github.com/ybiquitous))!

##### Version 6.9.0 (2019-12-27)

- Added: [vue/max-len]. Thanks to [@xcatliu](https://github.com/xcatliu)!

##### Version 6.8.0 (2019-12-25)

- Added: [@typescript-eslint/no-extra-semi]. Thanks to [@xcatliu](https://github.com/xcatliu)!

##### Version 6.7.0 (2019-11-19)

- Added: [@typescript-eslint/space-before-function-paren]. Thanks to Masafumi Koba ([@ybiquitous](https://github.com/ybiquitous))!

##### Version 6.6.0 (2019-11-17)

- Added: New [eslint-plugin-vue] rules: [vue/dot-location] and [vue/keyword-spacing]. Thanks to [@xcatliu](https://github.com/xcatliu)!

##### Version 6.5.0 (2019-10-26)

- Added: Support for [excluding deprecated rules]. Thanks to Alex Ilyaev ([@alexilyaev](https://github.com/alexilyaev))!

##### Version 6.4.0 (2019-10-05)

- Added: [unicorn/no-nested-ternary]. Thanks to Yang Mingshan ([@yangmingshan](https://github.com/yangmingshan))!

##### Version 6.3.0 (2019-09-10)

- Added: [@typescript-eslint/brace-style]. Thanks to Masafumi Koba ([@ybiquitous](https://github.com/ybiquitous))!

##### Version 6.2.0 (2019-09-03)

- Added: [@typescript-eslint/quotes] (as a [special rule][@typescript-eslint/quotes-special]). Thanks to Masafumi Koba ([@ybiquitous](https://github.com/ybiquitous))!

##### Version 6.1.0 (2019-08-19)

- Added: [function-call-argument-newline] (new in ESLint 6.2.0). Thanks to Masafumi Koba ([@ybiquitous](https://github.com/ybiquitous))!

##### Version 6.0.0 (2019-06-25)

- Changed: The CLI helper tool now considers [no-confusing-arrow] to conflict if you use the default value of its `allowParens` option. The default was changed to `true` in ESLint 6, which conflicts with Prettier.

  If the CLI helper tool gives you errors about this after upgrading, the solution is to change this:

  ```json
  {
    "rules": {
      "no-confusing-arrow": ["error"]
    }
  }
  ```

  Into this:

  ```json
  {
    "rules": {
      "no-confusing-arrow": ["error", { "allowParens": false }]
    }
  }
  ```

  The latter works in both ESLint 6 as well as in ESLint 5 and older.

- Improved: `eslint --print-config` usage instructions. The CLI tool help text as well as the documentation has been updated to suggest commands that work in ESLint 6.0 as well as in ESLint 5 and older. (Instead of `eslint --print-config .`, use `eslint --print-config path/to/main.js`.)

##### Version 5.1.0 (2019-06-25)

- Added: [react/jsx-curly-newline]. Thanks to Masafumi Koba ([@ybiquitous](https://github.com/ybiquitous))!

##### Version 5.0.0 (2019-06-15)

- Removed: [react/self-closing-comp]. This rule was added in v4.1.0 not because it *conflicted* with Prettier but because it was *unnecessary* when using Prettier. However, in v1.18.0 [Prettier stopped converting empty elements to self-closing elements][prettier-self-closing]. So the rule is not unnecessary anymore.

  If you use Prettier v1.17.1 or older you should be able to upgrade eslint-config-prettier to v5.0.0 without having to do anything else.

  If you use Prettier v1.18.0 or newer, you might get lint errors about for example changing `<div></div>` into `<div />`. You have two options:

  - Run `eslint --fix` if you prefer to enforce self-closing elements where possible. This should fix all the errors.
  - Add `"react/self-closing-comp": "off"` to your ESLint config if you use autofix from your editor and you face the same [issue as Prettier did][prettier-self-closing].

- Changed: Node.js 6 is no longer officially supported, but v5.0.0 should still work with it.

##### Version 4.3.0 (2019-05-16)

- Added: New [eslint-plugin-vue] rules: [vue/arrow-spacing], [vue/block-spacing], [vue/brace-style] and [vue/comma-dangle].
- Added: New [@typescript-eslint/eslint-plugin] rules: [@typescript-eslint/func-call-spacing] and [@typescript-eslint/semi].

##### Version 4.2.0 (2019-04-25)

- Added: [@typescript-eslint/no-extra-parens]. Thanks to Keiichiro Amemiya ([@Hoishin](https://github.com/Hoishin)) and Jen Gorfine ([@jgorfine](https://github.com/jgorfine))!

##### Version 4.1.0 (2019-02-26)

- Added: [linebreak-style]. Use Prettier’s [end-of-line] option instead.
- Added: [react/self-closing-comp]. Thanks to Gaurav Gupta ([@gaurav5430](https://github.com/gaurav5430))!

##### Version 4.0.0 (2019-01-26)

- Breaking change: Support for [eslint-plugin-typescript] has been removed and replaced with support for its successor [@typescript-eslint/eslint-plugin]. Thanks to TANIGUCHI Masaya ([@ta2gch](https://github.com/ta2gch)) and everyone else who helped with this!
- Changed: [arrow-body-style] and [prefer-arrow-callback] are now marked as [special rules][arrow-special], since they might cause problems if using [eslint-plugin-prettier] and `--fix`. They are turned off by default, and the CLI helper tool will *warn* about them (but not error if you do enable them). This won’t break your linting checks, but do note that these rules will be disabled unless you explicitly enable them again, and that you might see new warnings when running the CLI helper tool.

##### Version 3.6.0 (2019-01-19)

- Added: Support for [eslint-plugin-babel]. Thanks to Matija Marohnić ([@silvenon](https://github.com/silvenon))!

##### Version 3.5.0 (2019-01-16)

- Fixed: The eslint-plugin-vue change from 3.4.0 has been reverted. That change requires eslint-plugin-vue@5, while many use eslint-plugin-vue@4. In other words, it was an accidental breaking change. Also, after thinking about it some more, it makes sense to have a Prettier-specific list of rules, rather than using the `vue/no-layout-rules` list, since there can be layout rules that don’t conflict with but rather complement Prettier.
- Added: New eslint-plugin-vue rules coming in the next version after 5.1.0.

##### Version 3.4.0 (2019-01-13)

- Added: Support for [eslint-plugin-typescript]. Thanks to Jed Fox ([@j-f1](https://github.com/j-f1))!
- Improved: The eslint-plugin-vue integration is now using the `vue/no-layout-rules` config behind the scenes, so it should automatically stay up-to-date when new eslint-plugin-vue versions are released. Thanks to Michał Sajnóg ([@michalsnik](https://github.com/michalsnik))!

##### Version 3.3.0 (2018-11-11)

- Added: The [vue/html-self-closing] rule (as a [special rule][vue/html-self-closing-special]). Thanks to Yamagishi Kazutoshi ([@ykzts](https://github.com/ykzts))!

##### Version 3.2.0 (2018-11-10)

- Added: Support for [eslint-plugin-vue].
- Fixed: The CLI helper tool should now work in Node.js 6 with npm 3 again. Thanks to Grant Snodgrass ([@meeber](https://github.com/meeber))!
- Improved: Updated documentation.

##### Version 3.1.0 (2018-09-22)

- Added: Support for [eslint-plugin-unicorn]. Thanks to John Mars ([@j0hnm4r5](https://github.com/j0hnm4r5))!
- Changed: The [quotes] rule is now allowed to be used to forbid unnecessary backticks. This means that the CLI helper tool no longer can automatically validate it, so you’ll need to refer the [quotes special rule documentation][quotes-special]. Thanks to Nick Petruzzelli ([@npetruzzelli](https://github.com/npetruzzelli))!

##### Version 3.0.1 (2018-08-13)

- Improved: `eslint --print-config` usage instructions.

##### Version 3.0.0 (2018-08-13)

- Breaking change: Dropped Node.js 4 support.

##### Version 2.10.0 (2018-08-13)

- Added: [flowtype/boolean-style]. Thanks to Mayank Agarwal ([@Mayank1791989](https://github.com/Mayank1791989))!
- Added: [react/jsx-child-element-spacing]
- Added: [react/jsx-props-no-multi-spaces]

##### Version 2.9.0 (2017-11-26)

- Added: The [implicit-arrow-linebreak] rule.

##### Version 2.8.0 (2017-11-19)

- Added: The [react/jsx-one-expression-per-line] rule.

##### Version 2.7.0 (2017-11-01)

- Added: The [lines-around-comment] rule (as a [special rule][lines-around-comment-special]). Thanks to Maurice de Beijer ([@mauricedb](https://github.com/mauricedb))!
- Added: The [no-unexpected-multiline] rule (as a [special rule][no-unexpected-multiline-special]). Thanks to Suhas Karanth ([@sudo-suhas](https://github.com/sudo-suhas))!

##### Version 2.6.0 (2017-09-23)

- Added: The [no-floating-decimal] rule.

##### Version 2.5.0 (2017-09-16)

- Added: Support for [eslint-plugin-standard]. Thanks to Christian Pekeler ([@pekeler](https://github.com/pekeler))!

##### Version 2.4.0 (2017-09-02)

- Added: The [function-paren-newline] rule (new in [ESLint 4.6.0]). Thanks to Pierre Vanduynslager ([@vanduynslagerp](https://github.com/vanduynslagerp))!

##### Version 2.3.0 (2017-06-30)

- Added: The (deprecated) [indent-legacy] rule. Thanks to M. Ian Graham ([@miangraham](https://github.com/miangraham))!

##### Version 2.2.0 (2017-06-17)

- Added: New rules from [ESLint 4.0.0]:
  - [array-element-newline]
  - [array-bracket-newline]
  - [semi-style]
  - [switch-colon-spacing]
- Added: [react/jsx-closing-tag-location]

##### Version 2.1.1 (2017-05-20)

- No code changes. Just updates to the readme.

##### Version 2.1.0 (2017-05-13)

- Added: The [no-tabs] rule (as a [special rule][no-tabs-special]). Thanks to Alex Meah ([@AlexMeah](https://github.com/AlexMeah))!

##### Version 2.0.0 (2017-05-07)

- Changed/Improved: The CLI helper tool is now more helpful.

  - The options of special rules are now validated if possible. If a special rule is enabled with non-conflicting options, the CLI no longer warns about it.
  - If only special rules that cannot be automatically checked are found, the CLI no longer exists with a non-zero exit code. Instead, it only warns about the rules.

- Changed: The [no-confusing-arrow] is now a special rule again, since it might conflict with recent Prettier versions.

- Removed: The `react/wrap-multilines` rule (which has been deprecated for a while), since it was removed in eslint-plugin-react@7.

##### Version 1.7.0 (2017-04-19)

- Changed: The [no-confusing-arrow] is no longer a special rule, but simply turned off, since recent Prettier versions make it redundant.
- Improved: The CLI helper tool now has a more helpful message for special rules, and exits with a different status code if only special rules were found. The exit codes are now documented as well.

##### Version 1.6.0 (2017-04-05)

- Added: The [curly] rule. Thanks to Martin Rädlinger ([@formatlos](https://github.com/formatlos))!

##### Version 1.5.0 (2017-03-04)

- Added: The [nonblock-statement-body-position] rule.

##### Version 1.4.1 (2017-02-28)

- Improved: eslint-config-prettier is now part of the [prettier] organization! This version updates all URLs to point to the new home of the project.

##### Version 1.4.0 (2017-02-26)

- Added: The [no-confusing-arrow] rule (as a [special rule][no-confusing-arrow-special]). Thanks to Dominik Ferber ([@dferber90](https://github.com/dferber90))!
- Added: Deprecated or removed rules that might conflict with prettier. Thanks to Dominik Ferber ([@dferber90](https://github.com/dferber90))!

##### Version 1.3.0 (2017-02-21)

- Added: The [template-tag-spacing] rule. Thanks to Thibault Derousseaux ([@tibdex](https://github.com/tibdex))!

##### Version 1.2.0 (2017-02-14)

- Added: The [one-var-declaration-per-line] rule. Thanks to Ruben Oostinga ([@0xR](https://github.com/0xR))!

##### Version 1.1.1 (2017-02-12)

- Minor documentation tweak: Changed "Exceptions" into "Special rules".

##### Version 1.1.0 (2017-02-10)

- Fixed: The [eslint-plugin-react] exclusion rules now actually work.
- Fixed: The CLI helper tool now works in Node.js 4. Thanks to Nathan Friedly ([@nfriedly](https://github.com/nfriedly))!
- Added: Support for [eslint-plugin-flowtype].
- Improved: Minor things for the CLI helper tool.
- Improved: There are now tests for everything.

##### Version 1.0.3 (2017-02-03)

- Fixed: `"extends": "prettier/react"` now actually works.

##### Version 1.0.2 (2017-01-30)

- Improved: CLI helper tool instructions.

##### Version 1.0.1 (2017-01-29)

- No difference from 1.0.0. Just an `npm publish` mistake.

##### Version 1.0.0 (2017-01-29)

- Initial release.

[@babel/eslint-plugin]: https://github.com/babel/babel/tree/main/eslint/babel-eslint-plugin

[@typescript-eslint/block-spacing]: https://github.com/typescript-eslint/typescript-eslint/blob/master/packages/eslint-plugin/docs/rules/block-spacing.md

[@typescript-eslint/brace-style]: https://github.com/typescript-eslint/typescript-eslint/blob/master/packages/eslint-plugin/docs/rules/brace-style.md

[@typescript-eslint/comma-dangle]: https://github.com/typescript-eslint/typescript-eslint/blob/master/packages/eslint-plugin/docs/rules/comma-dangle.md

[@typescript-eslint/comma-spacing]: https://github.com/typescript-eslint/typescript-eslint/blob/master/packages/eslint-plugin/docs/rules/comma-spacing.md

[@typescript-eslint/eslint-plugin]: https://github.com/typescript-eslint/typescript-eslint

[@typescript-eslint/func-call-spacing]: https://github.com/typescript-eslint/typescript-eslint/blob/master/packages/eslint-plugin/docs/rules/func-call-spacing.md

[@typescript-eslint/key-spacing]: https://github.com/typescript-eslint/typescript-eslint/blob/master/packages/eslint-plugin/docs/rules/key-spacing.md

[@typescript-eslint/keyword-spacing]: https://github.com/typescript-eslint/typescript-eslint/blob/master/packages/eslint-plugin/docs/rules/keyword-spacing.md

[@typescript-eslint/lines-around-comment]: https://github.com/typescript-eslint/typescript-eslint/blob/master/packages/eslint-plugin/docs/rules/lines-around-comment.md

[@typescript-eslint/no-extra-parens]: https://github.com/typescript-eslint/typescript-eslint/blob/master/packages/eslint-plugin/docs/rules/no-extra-parens.md

[@typescript-eslint/no-extra-semi]: https://github.com/typescript-eslint/typescript-eslint/blob/master/packages/eslint-plugin/docs/rules/no-extra-semi.md

[@typescript-eslint/object-curly-spacing]: https://github.com/typescript-eslint/typescript-eslint/blob/master/packages/eslint-plugin/docs/rules/object-curly-spacing.md

[@typescript-eslint/quotes-special]: https://github.com/prettier/eslint-config-prettier/blob/857257179fe69715362dfa9300762d6e534c0603/README.md#quotes

[@typescript-eslint/quotes]: https://github.com/typescript-eslint/typescript-eslint/blob/master/packages/eslint-plugin/docs/rules/quotes.md

[@typescript-eslint/semi]: https://github.com/typescript-eslint/typescript-eslint/blob/master/packages/eslint-plugin/docs/rules/semi.md

[@typescript-eslint/space-before-blocks]: https://github.com/typescript-eslint/typescript-eslint/blob/master/packages/eslint-plugin/docs/rules/space-before-blocks.md

[@typescript-eslint/space-before-function-paren]: https://github.com/typescript-eslint/typescript-eslint/blob/master/packages/eslint-plugin/docs/rules/space-before-function-paren.md

[@typescript-eslint/space-infix-ops]: https://github.com/typescript-eslint/typescript-eslint/blob/master/packages/eslint-plugin/docs/rules/space-infix-ops.md

[array-bracket-newline]: https://eslint.org/docs/rules/array-bracket-newline

[array-element-newline]: https://eslint.org/docs/rules/array-element-newline

[arrow-body-style]: https://eslint.org/docs/rules/arrow-body-style

[arrow-special]: https://github.com/prettier/eslint-config-prettier/blob/2c842675e55b91aecaef6f997d234ebf2d220ffb/README.md#arrow-body-style-and-prefer-arrow-callback

[curly]: https://eslint.org/docs/rules/curly

[deprecated-8.53.0]: https://eslint.org/blog/2023/10/deprecating-formatting-rules/

[end-of-line]: https://prettier.io/docs/en/options.html#end-of-line

[eslint 4.0.0]: https://eslint.org/blog/2017/06/eslint-v4.0.0-released

[eslint 4.6.0]: https://eslint.org/blog/2017/09/eslint-v4.6.0-released

[ESLINT_USE_FLAT_CONFIG]: https://github.com/prettier/eslint-config-prettier#eslint_use_flat_config-environment-variable

[eslint-plugin-babel]: https://github.com/babel/eslint-plugin-babel

[eslint-plugin-flowtype]: https://github.com/gajus/eslint-plugin-flowtype

[eslint-plugin-prettier]: https://github.com/prettier/eslint-plugin-prettier

[eslint-plugin-react]: https://github.com/yannickcr/eslint-plugin-react

[eslint-plugin-standard]: https://github.com/xjamundx/eslint-plugin-standard

[eslint-plugin-typescript]: https://github.com/bradzacher/eslint-plugin-typescript

[eslint-plugin-unicorn]: https://github.com/sindresorhus/eslint-plugin-unicorn

[eslint-plugin-vue]: https://github.com/vuejs/eslint-plugin-vue

[excluding deprecated rules]: https://github.com/prettier/eslint-config-prettier/tree/9f6b59486ad742dc12ad3be157ddff5f8454ef7a#excluding-deprecated-rules

[flowtype/boolean-style]: https://github.com/gajus/eslint-plugin-flowtype#eslint-plugin-flowtype-rules-boolean-style

[flowtype/object-type-curly-spacing]: https://github.com/gajus/eslint-plugin-flowtype#eslint-plugin-flowtype-rules-object-type-curly-spacing

[flowtype/quotes]: https://github.com/gajus/eslint-plugin-flowtype#eslint-plugin-flowtype-rules-quotes

[function-call-argument-newline]: https://eslint.org/docs/rules/function-call-argument-newline

[function-paren-newline]: https://eslint.org/docs/rules/function-paren-newline

[implicit-arrow-linebreak]: https://eslint.org/docs/rules/implicit-arrow-linebreak

[indent-legacy]: https://eslint.org/docs/rules/indent-legacy

[linebreak-style]: https://eslint.org/docs/rules/linebreak-style

[lines-around-comment-special]: https://github.com/prettier/eslint-config-prettier/blob/5399175c37466747aae9d407021dffec2c169c8b/README.md#lines-around-comment

[lines-around-comment]: https://eslint.org/docs/rules/lines-around-comment

[max-statements-per-line]: https://eslint.org/docs/latest/rules/max-statements-per-line

[no-confusing-arrow-special]: https://github.com/prettier/eslint-config-prettier/blob/08ac5bcc25c9cdc71864b4a1e4191e7d28dd2bc2/README.md#no-confusing-arrow

[no-confusing-arrow]: https://eslint.org/docs/rules/no-confusing-arrow

[no-floating-decimal]: https://eslint.org/docs/rules/no-floating-decimal

[no-tabs-special]: https://github.com/prettier/eslint-config-prettier/blob/dfa6e2b51f11a8001e9e7d38b78f03c7d75175ec/README.md#no-tabs

[no-tabs]: https://eslint.org/docs/rules/no-tabs

[no-unexpected-multiline-special]: https://github.com/prettier/eslint-config-prettier/blob/5399175c37466747aae9d407021dffec2c169c8b/README.md#no-unexpected-multiline

[no-unexpected-multiline]: https://eslint.org/docs/rules/no-unexpected-multiline

[nonblock-statement-body-position]: https://eslint.org/docs/rules/nonblock-statement-body-position

[one-var-declaration-per-line]: https://eslint.org/docs/rules/one-var-declaration-per-line

[plugin:prettier/recommended]: https://github.com/prettier/eslint-plugin-prettier#recommended-configuration

[prefer-arrow-callback]: https://eslint.org/docs/rules/prefer-arrow-callback

[prettier-prettier-config]: https://github.com/prettier/eslint-config-prettier/tree/03c79b9306892d4dbc828ce723813ef015baabc5#arrow-body-style-and-prefer-arrow-callback

[prettier-self-closing]: https://prettier.io/blog/2019/06/06/1.18.0.html#stop-converting-empty-jsx-elements-to-self-closing-elements-6127-by-duailibe

[prettier]: https://github.com/prettier

[quotes-special]: https://github.com/prettier/eslint-config-prettier/blob/8d264cd0a7f06c12e2e05415e0282a4f8f21ebc9/README.md#quotes

[quotes]: https://eslint.org/docs/rules/quotes

[react/jsx-child-element-spacing]: https://github.com/yannickcr/eslint-plugin-react/blob/master/docs/rules/jsx-child-element-spacing.md

[react/jsx-closing-tag-location]: https://github.com/yannickcr/eslint-plugin-react/blob/master/docs/rules/jsx-closing-tag-location.md

[react/jsx-curly-newline]: https://github.com/yannickcr/eslint-plugin-react/blob/master/docs/rules/jsx-curly-newline.md

[react/jsx-newline]: https://github.com/yannickcr/eslint-plugin-react/blob/master/docs/rules/jsx-newline.md

[react/jsx-one-expression-per-line]: https://github.com/yannickcr/eslint-plugin-react/blob/master/docs/rules/jsx-one-expression-per-line.md

[react/jsx-props-no-multi-spaces]: https://github.com/yannickcr/eslint-plugin-react/blob/master/docs/rules/jsx-props-no-multi-spaces.md

[react/self-closing-comp]: https://github.com/yannickcr/eslint-plugin-react/blob/master/docs/rules/self-closing-comp.md

[semi-style]: https://eslint.org/docs/rules/semi-style

[switch-colon-spacing]: https://eslint.org/docs/rules/switch-colon-spacing

[template-tag-spacing]: https://eslint.org/docs/rules/template-tag-spacing

[unicode-bom]: https://eslint.org/docs/rules/unicode-bom

[unicorn/empty-brace-spaces]: https://github.com/sindresorhus/eslint-plugin-unicorn/blob/master/docs/rules/empty-brace-spaces.md

[unicorn/no-nested-ternary]: https://github.com/sindresorhus/eslint-plugin-unicorn/blob/master/docs/rules/no-nested-ternary.md

[unicorn/template-indent-special]: https://github.com/prettier/eslint-config-prettier/blob/4110dff0c5b258be37506ecee9578cd7ff8e4759/README.md#unicorntemplate-indent

[unicorn/template-indent]: https://github.com/sindresorhus/eslint-plugin-unicorn/blob/master/docs/rules/template-indent.md

[vue/array-element-newline]: https://github.com/vuejs/eslint-plugin-vue/blob/master/docs/rules/array-element-newline.md

[vue/arrow-spacing]: https://github.com/vuejs/eslint-plugin-vue/blob/master/docs/rules/arrow-spacing.md

[vue/block-spacing]: https://github.com/vuejs/eslint-plugin-vue/blob/master/docs/rules/block-spacing.md

[vue/brace-style]: https://github.com/vuejs/eslint-plugin-vue/blob/master/docs/rules/brace-style.md

[vue/comma-dangle]: https://github.com/vuejs/eslint-plugin-vue/blob/master/docs/rules/comma-dangle.md

[vue/dot-location]: https://github.com/vuejs/eslint-plugin-vue/blob/master/docs/rules/dot-location.md

[vue/html-self-closing-special]: https://github.com/prettier/eslint-config-prettier/blob/d5e7af986221df5faedc12893d8dc3150a808693/README.md#vuehtml-self-closing

[vue/html-self-closing]: https://github.com/vuejs/eslint-plugin-vue/blob/master/docs/rules/html-self-closing.md

[vue/keyword-spacing]: https://github.com/vuejs/eslint-plugin-vue/blob/master/docs/rules/array-bracket-newline.md

[vue/keyword-spacing]: https://github.com/vuejs/eslint-plugin-vue/blob/master/docs/rules/block-tag-newline.md

[vue/keyword-spacing]: https://github.com/vuejs/eslint-plugin-vue/blob/master/docs/rules/keyword-spacing.md

[vue/max-len]: https://github.com/vuejs/eslint-plugin-vue/blob/master/docs/rules/max-len.md

[vue/multiline-ternary]: https://github.com/vuejs/eslint-plugin-vue/blob/master/docs/rules/multiline-ternary.md

[vue/quote-props]: https://github.com/vuejs/eslint-plugin-vue/blob/master/docs/rules/quote-props.md
renovate bot added a commit to andrei-picus-tink/auto-renovate that referenced this pull request Sep 3, 2025
| datasource | package                | from   | to     |
| ---------- | ---------------------- | ------ | ------ |
| npm        | eslint-config-prettier | 10.1.5 | 10.1.8 |


## [v10.1.8](https://github.com/prettier/eslint-config-prettier/releases/tag/v10.1.8)

### eslint-config-prettier

#### 10.1.5

##### Patch Changes

- [#332](prettier/eslint-config-prettier#332) [`60fef02`](prettier/eslint-config-prettier@60fef02) Thanks [@JounQin](https://github.com/JounQin)! - chore: add `funding` field into `package.json`

#### 10.1.4

##### Patch Changes

- [#328](prettier/eslint-config-prettier#328) [`94b4799`](prettier/eslint-config-prettier@94b4799) Thanks [@silvenon](https://github.com/silvenon)! - fix(cli): do not crash on no rules configured

#### 10.1.3

##### Patch Changes

- [#325](prettier/eslint-config-prettier#325) [`4e95a1d`](prettier/eslint-config-prettier@4e95a1d) Thanks [@pilikan](https://github.com/pilikan)! - fix: this package is `commonjs`, align its types correctly

#### 10.1.2

##### Patch Changes

- [#321](prettier/eslint-config-prettier#321) [`a8768bf`](prettier/eslint-config-prettier@a8768bf) Thanks [@Fdawgs](https://github.com/Fdawgs)! - chore(package): add homepage for some 3rd-party registry - see [#321](prettier/eslint-config-prettier#321) for more details

#### 10.1.1

##### Patch Changes

- [#309](prettier/eslint-config-prettier#309) [`eb56a5e`](prettier/eslint-config-prettier@eb56a5e) Thanks [@JounQin](https://github.com/JounQin)! - fix: separate the `/flat` entry for compatibility

  For flat config users, the previous `"eslint-config-prettier"` entry still works, but `"eslint-config-prettier/flat"` adds a new `name` property for [config-inspector](https://eslint.org/blog/2024/04/eslint-config-inspector/), we just can't add it for the default entry for compatibility.

  See also [#308](prettier/eslint-config-prettier#308)

  ```ts
  // before
  import eslintConfigPrettier from "eslint-config-prettier";

  // after
  import eslintConfigPrettier from "eslint-config-prettier/flat";
  ```

#### 10.1.0

##### Minor Changes

- [#306](prettier/eslint-config-prettier#306) [`56e2e34`](prettier/eslint-config-prettier@56e2e34) Thanks [@JounQin](https://github.com/JounQin)! - feat: migrate to exports field

#### 10.0.3

##### Patch Changes

- [#294](prettier/eslint-config-prettier#294) [`8dbbd6d`](prettier/eslint-config-prettier@8dbbd6d) Thanks [@FloEdelmann](https://github.com/FloEdelmann)! - feat: add name to config

- [#280](prettier/eslint-config-prettier#280) [`cba5737`](prettier/eslint-config-prettier@cba5737) Thanks [@zanminkian](https://github.com/zanminkian)! - feat: add declaration file

#### 10.0.2

##### Patch Changes

- [#299](prettier/eslint-config-prettier#299) [`e750edc`](prettier/eslint-config-prettier@e750edc) Thanks [@Fdawgs](https://github.com/Fdawgs)! - chore(package): explicitly declare js module type

#### 10.0.0

##### Major Changes

- [#272](prettier/eslint-config-prettier#272) [`5be64be`](prettier/eslint-config-prettier@5be64be) Thanks [@abrahamguo](https://github.com/abrahamguo)! - add support for [@Stylistic](https://github.com/stylistic) formatting rules

#### Versions before 10.0.0

##### Version 9.1.0 (2023-12-02)

- Added: [unicorn/template-indent], (as a [special rule][unicorn/template-indent-special]). Thanks to Gürgün Dayıoğlu ([@gurgunday](https://github.com/gurgunday))!
- Changed: All the [formatting rules that were deprecated in ESLint 8.53.0][deprecated-8.53.0] are now excluded if you set the `ESLINT_CONFIG_PRETTIER_NO_DEPRECATED` environment variable.

##### Version 9.0.0 (2023-08-05)

- Added: The CLI helper tool now works with eslint.config.js (flat config). Just like ESLint itself, the CLI tool automatically first tries eslint.config.js and then eslintrc, and you can force which one to use by setting the [ESLINT\_USE\_FLAT\_CONFIG][ESLINT_USE_FLAT_CONFIG] environment variable. Note that the *config* of eslint-config-prettier has always been compatible with eslint.config.js (flat config) – it was just the CLI tool that needed updating. On top of that, the docs have been updated to mention how to use both eslint.config.js (flat config) and eslintrc, and the tests now test both config systems.
- Changed: [unicode-bom] is no longer turned off. Prettier preserves the BOM if you have one, and does not add one if missing. It was wrong of eslint-config-prettier to disable that rule. If you get ESLint errors after upgrading, either add `"unicode-bom": "off"` to your config to disable it again, or run ESLint with `--fix` to fix all files according to the rule (add or remove BOM). Thanks to Nicolas Stepien ([@nstepien](https://github.com/nstepien))!

##### Version 8.10.0 (2023-08-03)

- Added: [max-statements-per-line]. Thanks to [@Zamiell](https://github.com/Zamiell)!

##### Version 8.9.0 (2023-07-27)

- Added: [vue/array-element-newline]. Thanks to [@xcatliu](https://github.com/xcatliu)!

##### Version 8.8.0 (2023-03-20)

- Added: [@typescript-eslint/lines-around-comment]. Thanks to [@ttionya](https://github.com/ttionya)!

##### Version 8.7.0 (2023-03-06)

- Added: [@typescript-eslint/block-spacing]. Thanks to [@ttionya](https://github.com/ttionya)!
- Added: [@typescript-eslint/key-spacing]. Thanks to [@ttionya](https://github.com/ttionya)!

##### Version 8.6.0 (2023-01-02)

- Added: [vue/multiline-ternary]. Thanks to [@xcatliu](https://github.com/xcatliu)!

##### Version 8.5.0 (2022-03-02)

- Added: [@typescript-eslint/space-before-blocks]. Thanks to Masafumi Koba ([@ybiquitous](https://github.com/ybiquitous))!

##### Version 8.4.0 (2022-02-19)

- Added: [vue/quote-props]. Thanks to [@xcatliu](https://github.com/xcatliu)!

##### Version 8.3.0 (2021-04-24)

- Added: Support for [@babel/eslint-plugin]. Thanks to Chip Zhang ([@ChipZhang](https://github.com/ChipZhang)) for the heads-up! ([eslint-plugin-babel] is still supported, too.)

##### Version 8.2.0 (2021-04-13)

- Added: [flowtype/quotes]. Thanks to Martin Zlámal ([@mrtnzlml](https://github.com/mrtnzlml))!

##### Version 8.1.0 (2021-02-24)

- Added: [flowtype/object-type-curly-spacing].
- Added: Dummy files for the configs removed in 8.0.0. The dummy files throw an error that try to guide you how to upgrade.

##### Version 8.0.0 (2021-02-21)

- Changed: All configs have been merged into one!

  To upgrade, change:

  ```json
  {
    "extends": [
      "some-other-config-you-use",
      "prettier",
      "prettier/@typescript-eslint",
      "prettier/babel",
      "prettier/flowtype",
      "prettier/react",
      "prettier/standard",
      "prettier/unicorn",
      "prettier/vue"
    ]
  }
  ```

  Into:

  <!-- prettier-ignore -->

  ```json
  {
    "extends": [
      "some-other-config-you-use",
      "prettier"
    ]
  }
  ```

  The `"prettier"` config now includes not just ESLint core rules, but also rules from all plugins. Much simpler!

  So … what’s the catch? Why haven’t we done this earlier? Turns out it’s just a sad mistake. I ([@lydell](https://github.com/lydell)) was confused when testing, and thought that turning off unknown rules in a config was an error. Thanks to Georgii Dolzhykov ([@thorn0](https://github.com/thorn0)) for pointing this out!

  If you use [eslint-plugin-prettier], all you need is [plugin:prettier/recommended]:

  <!-- prettier-ignore -->

  ```json
  {
    "extends": [
      "some-other-config-you-use",
      "plugin:prettier/recommended"
    ]
  }
  ```

  (The ["prettier/prettier" config][prettier-prettier-config] still exists separately. It’s the odd one out. The main `"prettier"` config does *not* include the rules from it.)

- Changed: The CLI helper tool now only prints warnings for [arrow-body-style] and [prefer-arrow-callback], just like other “special rules.” This means that if you’ve decided to use those rules and [eslint-plugin-prettier] at the same time, you’ll get warnings but exit code zero (success).

##### Version 7.2.0 (2021-01-18)

- Added: [@typescript-eslint/object-curly-spacing].
- Added: [react/jsx-newline].

##### Version 7.1.0 (2020-12-19)

- Added: [unicorn/empty-brace-spaces]. Thanks to fisker Cheung ([@fisker](https://github.com/fisker))!

##### Version 7.0.0 (2020-12-05)

- Changed: At least ESLint 7.0.0 is now required.

- Changed: [arrow-body-style] and [prefer-arrow-callback] are no longer turned off by default. They only need to be turned off if you use [eslint-plugin-prettier]. If you do, add `"prettier/prettier"` to your `"extends"` array to turn them off again.

  ```json
  {
    "extends": ["prettier", "prettier/prettier"],
    "plugins": ["prettier"],
    "rules": {
      "prettier/prettier": "error"
    }
  }
  ```

  Alternatively, update [eslint-plugin-prettier] to version 3.2.0 or later which automatically turns off these two rules in its `"plugin:prettier/recommended"` config.

  The CLI helper tool only warns about these rules if you have the `"prettier/prettier"` *rule* enabled for a file.

- Changed: `no-tabs` is now a validatable rule. If you use it, you should enable `allowIndentationTabs` so that the rule works regardless of your Prettier config:

  ```json
  {
    "rules": {
      "no-tabs": ["error", { "allowIndentationTabs": true }]
    }
  }
  ```

- Changed: The CLI helper tool is now called just `eslint-config-prettier` instead of `eslint-config-prettier-check`. This is so that `npx eslint-config-prettier` always works regardless of whether you have already installed `eslint-config-prettier` or not: If you have, the local installation is used; if you haven’t, `npx` downloads a temporary copy.

- Changed: The CLI helper tool no longer requires you to pipe the output of `eslint --print-config` to it. Instead, it does that automatically for you via ESLint API:s added in ESLint v7.

  Before:

  ```
  npx eslint --print-config index.js | npx eslint-config-prettier-check
  ```

  After:

  ```
  npx eslint-config-prettier index.js
  ```

- Improved: The npm package is now 75% smaller.

##### Version 6.15.0 (2020-10-27)

- Added: [@typescript-eslint/space-infix-ops]. Thanks to Masafumi Koba ([@ybiquitous](https://github.com/ybiquitous))!

##### Version 6.14.0 (2020-10-21)

- Added: New [eslint-plugin-vue] rules: \[vue/array-bracket-newline] and \[vue/block-tag-newline]. Thanks to [@xcatliu](https://github.com/xcatliu)!

##### Version 6.13.0 (2020-10-16)

- Added: New rules in [eslint-plugin-vue] 7.0 (which supports Vue 3.0). Thanks to [@xcatliu](https://github.com/xcatliu)!

##### Version 6.12.0 (2020-09-25)

- Added: [@typescript-eslint/comma-dangle]. Thanks to Masafumi Koba ([@ybiquitous](https://github.com/ybiquitous))!

##### Version 6.11.0 (2020-04-21)

- Added: [@typescript-eslint/keyword-spacing]. Thanks to Hans Bergren ([@hbergren](https://github.com/hbergren))!

##### Version 6.10.1 (2020-03-22)

- Improved: Recommend using `npx` when running the CLI helper tool.
- Updated: Mention that eslint-config-prettier has been tested with Prettier 2.0 and the latest versions of plugins.

##### Version 6.10.0 (2020-01-28)

- Added: [@typescript-eslint/comma-spacing]. Thanks to Masafumi Koba ([@ybiquitous](https://github.com/ybiquitous))!

##### Version 6.9.0 (2019-12-27)

- Added: [vue/max-len]. Thanks to [@xcatliu](https://github.com/xcatliu)!

##### Version 6.8.0 (2019-12-25)

- Added: [@typescript-eslint/no-extra-semi]. Thanks to [@xcatliu](https://github.com/xcatliu)!

##### Version 6.7.0 (2019-11-19)

- Added: [@typescript-eslint/space-before-function-paren]. Thanks to Masafumi Koba ([@ybiquitous](https://github.com/ybiquitous))!

##### Version 6.6.0 (2019-11-17)

- Added: New [eslint-plugin-vue] rules: [vue/dot-location] and [vue/keyword-spacing]. Thanks to [@xcatliu](https://github.com/xcatliu)!

##### Version 6.5.0 (2019-10-26)

- Added: Support for [excluding deprecated rules]. Thanks to Alex Ilyaev ([@alexilyaev](https://github.com/alexilyaev))!

##### Version 6.4.0 (2019-10-05)

- Added: [unicorn/no-nested-ternary]. Thanks to Yang Mingshan ([@yangmingshan](https://github.com/yangmingshan))!

##### Version 6.3.0 (2019-09-10)

- Added: [@typescript-eslint/brace-style]. Thanks to Masafumi Koba ([@ybiquitous](https://github.com/ybiquitous))!

##### Version 6.2.0 (2019-09-03)

- Added: [@typescript-eslint/quotes] (as a [special rule][@typescript-eslint/quotes-special]). Thanks to Masafumi Koba ([@ybiquitous](https://github.com/ybiquitous))!

##### Version 6.1.0 (2019-08-19)

- Added: [function-call-argument-newline] (new in ESLint 6.2.0). Thanks to Masafumi Koba ([@ybiquitous](https://github.com/ybiquitous))!

##### Version 6.0.0 (2019-06-25)

- Changed: The CLI helper tool now considers [no-confusing-arrow] to conflict if you use the default value of its `allowParens` option. The default was changed to `true` in ESLint 6, which conflicts with Prettier.

  If the CLI helper tool gives you errors about this after upgrading, the solution is to change this:

  ```json
  {
    "rules": {
      "no-confusing-arrow": ["error"]
    }
  }
  ```

  Into this:

  ```json
  {
    "rules": {
      "no-confusing-arrow": ["error", { "allowParens": false }]
    }
  }
  ```

  The latter works in both ESLint 6 as well as in ESLint 5 and older.

- Improved: `eslint --print-config` usage instructions. The CLI tool help text as well as the documentation has been updated to suggest commands that work in ESLint 6.0 as well as in ESLint 5 and older. (Instead of `eslint --print-config .`, use `eslint --print-config path/to/main.js`.)

##### Version 5.1.0 (2019-06-25)

- Added: [react/jsx-curly-newline]. Thanks to Masafumi Koba ([@ybiquitous](https://github.com/ybiquitous))!

##### Version 5.0.0 (2019-06-15)

- Removed: [react/self-closing-comp]. This rule was added in v4.1.0 not because it *conflicted* with Prettier but because it was *unnecessary* when using Prettier. However, in v1.18.0 [Prettier stopped converting empty elements to self-closing elements][prettier-self-closing]. So the rule is not unnecessary anymore.

  If you use Prettier v1.17.1 or older you should be able to upgrade eslint-config-prettier to v5.0.0 without having to do anything else.

  If you use Prettier v1.18.0 or newer, you might get lint errors about for example changing `<div></div>` into `<div />`. You have two options:

  - Run `eslint --fix` if you prefer to enforce self-closing elements where possible. This should fix all the errors.
  - Add `"react/self-closing-comp": "off"` to your ESLint config if you use autofix from your editor and you face the same [issue as Prettier did][prettier-self-closing].

- Changed: Node.js 6 is no longer officially supported, but v5.0.0 should still work with it.

##### Version 4.3.0 (2019-05-16)

- Added: New [eslint-plugin-vue] rules: [vue/arrow-spacing], [vue/block-spacing], [vue/brace-style] and [vue/comma-dangle].
- Added: New [@typescript-eslint/eslint-plugin] rules: [@typescript-eslint/func-call-spacing] and [@typescript-eslint/semi].

##### Version 4.2.0 (2019-04-25)

- Added: [@typescript-eslint/no-extra-parens]. Thanks to Keiichiro Amemiya ([@Hoishin](https://github.com/Hoishin)) and Jen Gorfine ([@jgorfine](https://github.com/jgorfine))!

##### Version 4.1.0 (2019-02-26)

- Added: [linebreak-style]. Use Prettier’s [end-of-line] option instead.
- Added: [react/self-closing-comp]. Thanks to Gaurav Gupta ([@gaurav5430](https://github.com/gaurav5430))!

##### Version 4.0.0 (2019-01-26)

- Breaking change: Support for [eslint-plugin-typescript] has been removed and replaced with support for its successor [@typescript-eslint/eslint-plugin]. Thanks to TANIGUCHI Masaya ([@ta2gch](https://github.com/ta2gch)) and everyone else who helped with this!
- Changed: [arrow-body-style] and [prefer-arrow-callback] are now marked as [special rules][arrow-special], since they might cause problems if using [eslint-plugin-prettier] and `--fix`. They are turned off by default, and the CLI helper tool will *warn* about them (but not error if you do enable them). This won’t break your linting checks, but do note that these rules will be disabled unless you explicitly enable them again, and that you might see new warnings when running the CLI helper tool.

##### Version 3.6.0 (2019-01-19)

- Added: Support for [eslint-plugin-babel]. Thanks to Matija Marohnić ([@silvenon](https://github.com/silvenon))!

##### Version 3.5.0 (2019-01-16)

- Fixed: The eslint-plugin-vue change from 3.4.0 has been reverted. That change requires eslint-plugin-vue@5, while many use eslint-plugin-vue@4. In other words, it was an accidental breaking change. Also, after thinking about it some more, it makes sense to have a Prettier-specific list of rules, rather than using the `vue/no-layout-rules` list, since there can be layout rules that don’t conflict with but rather complement Prettier.
- Added: New eslint-plugin-vue rules coming in the next version after 5.1.0.

##### Version 3.4.0 (2019-01-13)

- Added: Support for [eslint-plugin-typescript]. Thanks to Jed Fox ([@j-f1](https://github.com/j-f1))!
- Improved: The eslint-plugin-vue integration is now using the `vue/no-layout-rules` config behind the scenes, so it should automatically stay up-to-date when new eslint-plugin-vue versions are released. Thanks to Michał Sajnóg ([@michalsnik](https://github.com/michalsnik))!

##### Version 3.3.0 (2018-11-11)

- Added: The [vue/html-self-closing] rule (as a [special rule][vue/html-self-closing-special]). Thanks to Yamagishi Kazutoshi ([@ykzts](https://github.com/ykzts))!

##### Version 3.2.0 (2018-11-10)

- Added: Support for [eslint-plugin-vue].
- Fixed: The CLI helper tool should now work in Node.js 6 with npm 3 again. Thanks to Grant Snodgrass ([@meeber](https://github.com/meeber))!
- Improved: Updated documentation.

##### Version 3.1.0 (2018-09-22)

- Added: Support for [eslint-plugin-unicorn]. Thanks to John Mars ([@j0hnm4r5](https://github.com/j0hnm4r5))!
- Changed: The [quotes] rule is now allowed to be used to forbid unnecessary backticks. This means that the CLI helper tool no longer can automatically validate it, so you’ll need to refer the [quotes special rule documentation][quotes-special]. Thanks to Nick Petruzzelli ([@npetruzzelli](https://github.com/npetruzzelli))!

##### Version 3.0.1 (2018-08-13)

- Improved: `eslint --print-config` usage instructions.

##### Version 3.0.0 (2018-08-13)

- Breaking change: Dropped Node.js 4 support.

##### Version 2.10.0 (2018-08-13)

- Added: [flowtype/boolean-style]. Thanks to Mayank Agarwal ([@Mayank1791989](https://github.com/Mayank1791989))!
- Added: [react/jsx-child-element-spacing]
- Added: [react/jsx-props-no-multi-spaces]

##### Version 2.9.0 (2017-11-26)

- Added: The [implicit-arrow-linebreak] rule.

##### Version 2.8.0 (2017-11-19)

- Added: The [react/jsx-one-expression-per-line] rule.

##### Version 2.7.0 (2017-11-01)

- Added: The [lines-around-comment] rule (as a [special rule][lines-around-comment-special]). Thanks to Maurice de Beijer ([@mauricedb](https://github.com/mauricedb))!
- Added: The [no-unexpected-multiline] rule (as a [special rule][no-unexpected-multiline-special]). Thanks to Suhas Karanth ([@sudo-suhas](https://github.com/sudo-suhas))!

##### Version 2.6.0 (2017-09-23)

- Added: The [no-floating-decimal] rule.

##### Version 2.5.0 (2017-09-16)

- Added: Support for [eslint-plugin-standard]. Thanks to Christian Pekeler ([@pekeler](https://github.com/pekeler))!

##### Version 2.4.0 (2017-09-02)

- Added: The [function-paren-newline] rule (new in [ESLint 4.6.0]). Thanks to Pierre Vanduynslager ([@vanduynslagerp](https://github.com/vanduynslagerp))!

##### Version 2.3.0 (2017-06-30)

- Added: The (deprecated) [indent-legacy] rule. Thanks to M. Ian Graham ([@miangraham](https://github.com/miangraham))!

##### Version 2.2.0 (2017-06-17)

- Added: New rules from [ESLint 4.0.0]:
  - [array-element-newline]
  - [array-bracket-newline]
  - [semi-style]
  - [switch-colon-spacing]
- Added: [react/jsx-closing-tag-location]

##### Version 2.1.1 (2017-05-20)

- No code changes. Just updates to the readme.

##### Version 2.1.0 (2017-05-13)

- Added: The [no-tabs] rule (as a [special rule][no-tabs-special]). Thanks to Alex Meah ([@AlexMeah](https://github.com/AlexMeah))!

##### Version 2.0.0 (2017-05-07)

- Changed/Improved: The CLI helper tool is now more helpful.

  - The options of special rules are now validated if possible. If a special rule is enabled with non-conflicting options, the CLI no longer warns about it.
  - If only special rules that cannot be automatically checked are found, the CLI no longer exists with a non-zero exit code. Instead, it only warns about the rules.

- Changed: The [no-confusing-arrow] is now a special rule again, since it might conflict with recent Prettier versions.

- Removed: The `react/wrap-multilines` rule (which has been deprecated for a while), since it was removed in eslint-plugin-react@7.

##### Version 1.7.0 (2017-04-19)

- Changed: The [no-confusing-arrow] is no longer a special rule, but simply turned off, since recent Prettier versions make it redundant.
- Improved: The CLI helper tool now has a more helpful message for special rules, and exits with a different status code if only special rules were found. The exit codes are now documented as well.

##### Version 1.6.0 (2017-04-05)

- Added: The [curly] rule. Thanks to Martin Rädlinger ([@formatlos](https://github.com/formatlos))!

##### Version 1.5.0 (2017-03-04)

- Added: The [nonblock-statement-body-position] rule.

##### Version 1.4.1 (2017-02-28)

- Improved: eslint-config-prettier is now part of the [prettier] organization! This version updates all URLs to point to the new home of the project.

##### Version 1.4.0 (2017-02-26)

- Added: The [no-confusing-arrow] rule (as a [special rule][no-confusing-arrow-special]). Thanks to Dominik Ferber ([@dferber90](https://github.com/dferber90))!
- Added: Deprecated or removed rules that might conflict with prettier. Thanks to Dominik Ferber ([@dferber90](https://github.com/dferber90))!

##### Version 1.3.0 (2017-02-21)

- Added: The [template-tag-spacing] rule. Thanks to Thibault Derousseaux ([@tibdex](https://github.com/tibdex))!

##### Version 1.2.0 (2017-02-14)

- Added: The [one-var-declaration-per-line] rule. Thanks to Ruben Oostinga ([@0xR](https://github.com/0xR))!

##### Version 1.1.1 (2017-02-12)

- Minor documentation tweak: Changed "Exceptions" into "Special rules".

##### Version 1.1.0 (2017-02-10)

- Fixed: The [eslint-plugin-react] exclusion rules now actually work.
- Fixed: The CLI helper tool now works in Node.js 4. Thanks to Nathan Friedly ([@nfriedly](https://github.com/nfriedly))!
- Added: Support for [eslint-plugin-flowtype].
- Improved: Minor things for the CLI helper tool.
- Improved: There are now tests for everything.

##### Version 1.0.3 (2017-02-03)

- Fixed: `"extends": "prettier/react"` now actually works.

##### Version 1.0.2 (2017-01-30)

- Improved: CLI helper tool instructions.

##### Version 1.0.1 (2017-01-29)

- No difference from 1.0.0. Just an `npm publish` mistake.

##### Version 1.0.0 (2017-01-29)

- Initial release.

[@babel/eslint-plugin]: https://github.com/babel/babel/tree/main/eslint/babel-eslint-plugin

[@typescript-eslint/block-spacing]: https://github.com/typescript-eslint/typescript-eslint/blob/master/packages/eslint-plugin/docs/rules/block-spacing.md

[@typescript-eslint/brace-style]: https://github.com/typescript-eslint/typescript-eslint/blob/master/packages/eslint-plugin/docs/rules/brace-style.md

[@typescript-eslint/comma-dangle]: https://github.com/typescript-eslint/typescript-eslint/blob/master/packages/eslint-plugin/docs/rules/comma-dangle.md

[@typescript-eslint/comma-spacing]: https://github.com/typescript-eslint/typescript-eslint/blob/master/packages/eslint-plugin/docs/rules/comma-spacing.md

[@typescript-eslint/eslint-plugin]: https://github.com/typescript-eslint/typescript-eslint

[@typescript-eslint/func-call-spacing]: https://github.com/typescript-eslint/typescript-eslint/blob/master/packages/eslint-plugin/docs/rules/func-call-spacing.md

[@typescript-eslint/key-spacing]: https://github.com/typescript-eslint/typescript-eslint/blob/master/packages/eslint-plugin/docs/rules/key-spacing.md

[@typescript-eslint/keyword-spacing]: https://github.com/typescript-eslint/typescript-eslint/blob/master/packages/eslint-plugin/docs/rules/keyword-spacing.md

[@typescript-eslint/lines-around-comment]: https://github.com/typescript-eslint/typescript-eslint/blob/master/packages/eslint-plugin/docs/rules/lines-around-comment.md

[@typescript-eslint/no-extra-parens]: https://github.com/typescript-eslint/typescript-eslint/blob/master/packages/eslint-plugin/docs/rules/no-extra-parens.md

[@typescript-eslint/no-extra-semi]: https://github.com/typescript-eslint/typescript-eslint/blob/master/packages/eslint-plugin/docs/rules/no-extra-semi.md

[@typescript-eslint/object-curly-spacing]: https://github.com/typescript-eslint/typescript-eslint/blob/master/packages/eslint-plugin/docs/rules/object-curly-spacing.md

[@typescript-eslint/quotes-special]: https://github.com/prettier/eslint-config-prettier/blob/857257179fe69715362dfa9300762d6e534c0603/README.md#quotes

[@typescript-eslint/quotes]: https://github.com/typescript-eslint/typescript-eslint/blob/master/packages/eslint-plugin/docs/rules/quotes.md

[@typescript-eslint/semi]: https://github.com/typescript-eslint/typescript-eslint/blob/master/packages/eslint-plugin/docs/rules/semi.md

[@typescript-eslint/space-before-blocks]: https://github.com/typescript-eslint/typescript-eslint/blob/master/packages/eslint-plugin/docs/rules/space-before-blocks.md

[@typescript-eslint/space-before-function-paren]: https://github.com/typescript-eslint/typescript-eslint/blob/master/packages/eslint-plugin/docs/rules/space-before-function-paren.md

[@typescript-eslint/space-infix-ops]: https://github.com/typescript-eslint/typescript-eslint/blob/master/packages/eslint-plugin/docs/rules/space-infix-ops.md

[array-bracket-newline]: https://eslint.org/docs/rules/array-bracket-newline

[array-element-newline]: https://eslint.org/docs/rules/array-element-newline

[arrow-body-style]: https://eslint.org/docs/rules/arrow-body-style

[arrow-special]: https://github.com/prettier/eslint-config-prettier/blob/2c842675e55b91aecaef6f997d234ebf2d220ffb/README.md#arrow-body-style-and-prefer-arrow-callback

[curly]: https://eslint.org/docs/rules/curly

[deprecated-8.53.0]: https://eslint.org/blog/2023/10/deprecating-formatting-rules/

[end-of-line]: https://prettier.io/docs/en/options.html#end-of-line

[eslint 4.0.0]: https://eslint.org/blog/2017/06/eslint-v4.0.0-released

[eslint 4.6.0]: https://eslint.org/blog/2017/09/eslint-v4.6.0-released

[ESLINT_USE_FLAT_CONFIG]: https://github.com/prettier/eslint-config-prettier#eslint_use_flat_config-environment-variable

[eslint-plugin-babel]: https://github.com/babel/eslint-plugin-babel

[eslint-plugin-flowtype]: https://github.com/gajus/eslint-plugin-flowtype

[eslint-plugin-prettier]: https://github.com/prettier/eslint-plugin-prettier

[eslint-plugin-react]: https://github.com/yannickcr/eslint-plugin-react

[eslint-plugin-standard]: https://github.com/xjamundx/eslint-plugin-standard

[eslint-plugin-typescript]: https://github.com/bradzacher/eslint-plugin-typescript

[eslint-plugin-unicorn]: https://github.com/sindresorhus/eslint-plugin-unicorn

[eslint-plugin-vue]: https://github.com/vuejs/eslint-plugin-vue

[excluding deprecated rules]: https://github.com/prettier/eslint-config-prettier/tree/9f6b59486ad742dc12ad3be157ddff5f8454ef7a#excluding-deprecated-rules

[flowtype/boolean-style]: https://github.com/gajus/eslint-plugin-flowtype#eslint-plugin-flowtype-rules-boolean-style

[flowtype/object-type-curly-spacing]: https://github.com/gajus/eslint-plugin-flowtype#eslint-plugin-flowtype-rules-object-type-curly-spacing

[flowtype/quotes]: https://github.com/gajus/eslint-plugin-flowtype#eslint-plugin-flowtype-rules-quotes

[function-call-argument-newline]: https://eslint.org/docs/rules/function-call-argument-newline

[function-paren-newline]: https://eslint.org/docs/rules/function-paren-newline

[implicit-arrow-linebreak]: https://eslint.org/docs/rules/implicit-arrow-linebreak

[indent-legacy]: https://eslint.org/docs/rules/indent-legacy

[linebreak-style]: https://eslint.org/docs/rules/linebreak-style

[lines-around-comment-special]: https://github.com/prettier/eslint-config-prettier/blob/5399175c37466747aae9d407021dffec2c169c8b/README.md#lines-around-comment

[lines-around-comment]: https://eslint.org/docs/rules/lines-around-comment

[max-statements-per-line]: https://eslint.org/docs/latest/rules/max-statements-per-line

[no-confusing-arrow-special]: https://github.com/prettier/eslint-config-prettier/blob/08ac5bcc25c9cdc71864b4a1e4191e7d28dd2bc2/README.md#no-confusing-arrow

[no-confusing-arrow]: https://eslint.org/docs/rules/no-confusing-arrow

[no-floating-decimal]: https://eslint.org/docs/rules/no-floating-decimal

[no-tabs-special]: https://github.com/prettier/eslint-config-prettier/blob/dfa6e2b51f11a8001e9e7d38b78f03c7d75175ec/README.md#no-tabs

[no-tabs]: https://eslint.org/docs/rules/no-tabs

[no-unexpected-multiline-special]: https://github.com/prettier/eslint-config-prettier/blob/5399175c37466747aae9d407021dffec2c169c8b/README.md#no-unexpected-multiline

[no-unexpected-multiline]: https://eslint.org/docs/rules/no-unexpected-multiline

[nonblock-statement-body-position]: https://eslint.org/docs/rules/nonblock-statement-body-position

[one-var-declaration-per-line]: https://eslint.org/docs/rules/one-var-declaration-per-line

[plugin:prettier/recommended]: https://github.com/prettier/eslint-plugin-prettier#recommended-configuration

[prefer-arrow-callback]: https://eslint.org/docs/rules/prefer-arrow-callback

[prettier-prettier-config]: https://github.com/prettier/eslint-config-prettier/tree/03c79b9306892d4dbc828ce723813ef015baabc5#arrow-body-style-and-prefer-arrow-callback

[prettier-self-closing]: https://prettier.io/blog/2019/06/06/1.18.0.html#stop-converting-empty-jsx-elements-to-self-closing-elements-6127-by-duailibe

[prettier]: https://github.com/prettier

[quotes-special]: https://github.com/prettier/eslint-config-prettier/blob/8d264cd0a7f06c12e2e05415e0282a4f8f21ebc9/README.md#quotes

[quotes]: https://eslint.org/docs/rules/quotes

[react/jsx-child-element-spacing]: https://github.com/yannickcr/eslint-plugin-react/blob/master/docs/rules/jsx-child-element-spacing.md

[react/jsx-closing-tag-location]: https://github.com/yannickcr/eslint-plugin-react/blob/master/docs/rules/jsx-closing-tag-location.md

[react/jsx-curly-newline]: https://github.com/yannickcr/eslint-plugin-react/blob/master/docs/rules/jsx-curly-newline.md

[react/jsx-newline]: https://github.com/yannickcr/eslint-plugin-react/blob/master/docs/rules/jsx-newline.md

[react/jsx-one-expression-per-line]: https://github.com/yannickcr/eslint-plugin-react/blob/master/docs/rules/jsx-one-expression-per-line.md

[react/jsx-props-no-multi-spaces]: https://github.com/yannickcr/eslint-plugin-react/blob/master/docs/rules/jsx-props-no-multi-spaces.md

[react/self-closing-comp]: https://github.com/yannickcr/eslint-plugin-react/blob/master/docs/rules/self-closing-comp.md

[semi-style]: https://eslint.org/docs/rules/semi-style

[switch-colon-spacing]: https://eslint.org/docs/rules/switch-colon-spacing

[template-tag-spacing]: https://eslint.org/docs/rules/template-tag-spacing

[unicode-bom]: https://eslint.org/docs/rules/unicode-bom

[unicorn/empty-brace-spaces]: https://github.com/sindresorhus/eslint-plugin-unicorn/blob/master/docs/rules/empty-brace-spaces.md

[unicorn/no-nested-ternary]: https://github.com/sindresorhus/eslint-plugin-unicorn/blob/master/docs/rules/no-nested-ternary.md

[unicorn/template-indent-special]: https://github.com/prettier/eslint-config-prettier/blob/4110dff0c5b258be37506ecee9578cd7ff8e4759/README.md#unicorntemplate-indent

[unicorn/template-indent]: https://github.com/sindresorhus/eslint-plugin-unicorn/blob/master/docs/rules/template-indent.md

[vue/array-element-newline]: https://github.com/vuejs/eslint-plugin-vue/blob/master/docs/rules/array-element-newline.md

[vue/arrow-spacing]: https://github.com/vuejs/eslint-plugin-vue/blob/master/docs/rules/arrow-spacing.md

[vue/block-spacing]: https://github.com/vuejs/eslint-plugin-vue/blob/master/docs/rules/block-spacing.md

[vue/brace-style]: https://github.com/vuejs/eslint-plugin-vue/blob/master/docs/rules/brace-style.md

[vue/comma-dangle]: https://github.com/vuejs/eslint-plugin-vue/blob/master/docs/rules/comma-dangle.md

[vue/dot-location]: https://github.com/vuejs/eslint-plugin-vue/blob/master/docs/rules/dot-location.md

[vue/html-self-closing-special]: https://github.com/prettier/eslint-config-prettier/blob/d5e7af986221df5faedc12893d8dc3150a808693/README.md#vuehtml-self-closing

[vue/html-self-closing]: https://github.com/vuejs/eslint-plugin-vue/blob/master/docs/rules/html-self-closing.md

[vue/keyword-spacing]: https://github.com/vuejs/eslint-plugin-vue/blob/master/docs/rules/array-bracket-newline.md

[vue/keyword-spacing]: https://github.com/vuejs/eslint-plugin-vue/blob/master/docs/rules/block-tag-newline.md

[vue/keyword-spacing]: https://github.com/vuejs/eslint-plugin-vue/blob/master/docs/rules/keyword-spacing.md

[vue/max-len]: https://github.com/vuejs/eslint-plugin-vue/blob/master/docs/rules/max-len.md

[vue/multiline-ternary]: https://github.com/vuejs/eslint-plugin-vue/blob/master/docs/rules/multiline-ternary.md

[vue/quote-props]: https://github.com/vuejs/eslint-plugin-vue/blob/master/docs/rules/quote-props.md
renovate bot added a commit to andrei-picus-tink/auto-renovate that referenced this pull request Sep 5, 2025
| datasource | package                | from   | to     |
| ---------- | ---------------------- | ------ | ------ |
| npm        | eslint-config-prettier | 10.1.5 | 10.1.8 |


## [v10.1.8](https://github.com/prettier/eslint-config-prettier/releases/tag/v10.1.8)

### eslint-config-prettier

#### 10.1.5

##### Patch Changes

- [#332](prettier/eslint-config-prettier#332) [`60fef02`](prettier/eslint-config-prettier@60fef02) Thanks [@JounQin](https://github.com/JounQin)! - chore: add `funding` field into `package.json`

#### 10.1.4

##### Patch Changes

- [#328](prettier/eslint-config-prettier#328) [`94b4799`](prettier/eslint-config-prettier@94b4799) Thanks [@silvenon](https://github.com/silvenon)! - fix(cli): do not crash on no rules configured

#### 10.1.3

##### Patch Changes

- [#325](prettier/eslint-config-prettier#325) [`4e95a1d`](prettier/eslint-config-prettier@4e95a1d) Thanks [@pilikan](https://github.com/pilikan)! - fix: this package is `commonjs`, align its types correctly

#### 10.1.2

##### Patch Changes

- [#321](prettier/eslint-config-prettier#321) [`a8768bf`](prettier/eslint-config-prettier@a8768bf) Thanks [@Fdawgs](https://github.com/Fdawgs)! - chore(package): add homepage for some 3rd-party registry - see [#321](prettier/eslint-config-prettier#321) for more details

#### 10.1.1

##### Patch Changes

- [#309](prettier/eslint-config-prettier#309) [`eb56a5e`](prettier/eslint-config-prettier@eb56a5e) Thanks [@JounQin](https://github.com/JounQin)! - fix: separate the `/flat` entry for compatibility

  For flat config users, the previous `"eslint-config-prettier"` entry still works, but `"eslint-config-prettier/flat"` adds a new `name` property for [config-inspector](https://eslint.org/blog/2024/04/eslint-config-inspector/), we just can't add it for the default entry for compatibility.

  See also [#308](prettier/eslint-config-prettier#308)

  ```ts
  // before
  import eslintConfigPrettier from "eslint-config-prettier";

  // after
  import eslintConfigPrettier from "eslint-config-prettier/flat";
  ```

#### 10.1.0

##### Minor Changes

- [#306](prettier/eslint-config-prettier#306) [`56e2e34`](prettier/eslint-config-prettier@56e2e34) Thanks [@JounQin](https://github.com/JounQin)! - feat: migrate to exports field

#### 10.0.3

##### Patch Changes

- [#294](prettier/eslint-config-prettier#294) [`8dbbd6d`](prettier/eslint-config-prettier@8dbbd6d) Thanks [@FloEdelmann](https://github.com/FloEdelmann)! - feat: add name to config

- [#280](prettier/eslint-config-prettier#280) [`cba5737`](prettier/eslint-config-prettier@cba5737) Thanks [@zanminkian](https://github.com/zanminkian)! - feat: add declaration file

#### 10.0.2

##### Patch Changes

- [#299](prettier/eslint-config-prettier#299) [`e750edc`](prettier/eslint-config-prettier@e750edc) Thanks [@Fdawgs](https://github.com/Fdawgs)! - chore(package): explicitly declare js module type

#### 10.0.0

##### Major Changes

- [#272](prettier/eslint-config-prettier#272) [`5be64be`](prettier/eslint-config-prettier@5be64be) Thanks [@abrahamguo](https://github.com/abrahamguo)! - add support for [@Stylistic](https://github.com/stylistic) formatting rules

#### Versions before 10.0.0

##### Version 9.1.0 (2023-12-02)

- Added: [unicorn/template-indent], (as a [special rule][unicorn/template-indent-special]). Thanks to Gürgün Dayıoğlu ([@gurgunday](https://github.com/gurgunday))!
- Changed: All the [formatting rules that were deprecated in ESLint 8.53.0][deprecated-8.53.0] are now excluded if you set the `ESLINT_CONFIG_PRETTIER_NO_DEPRECATED` environment variable.

##### Version 9.0.0 (2023-08-05)

- Added: The CLI helper tool now works with eslint.config.js (flat config). Just like ESLint itself, the CLI tool automatically first tries eslint.config.js and then eslintrc, and you can force which one to use by setting the [ESLINT\_USE\_FLAT\_CONFIG][ESLINT_USE_FLAT_CONFIG] environment variable. Note that the *config* of eslint-config-prettier has always been compatible with eslint.config.js (flat config) – it was just the CLI tool that needed updating. On top of that, the docs have been updated to mention how to use both eslint.config.js (flat config) and eslintrc, and the tests now test both config systems.
- Changed: [unicode-bom] is no longer turned off. Prettier preserves the BOM if you have one, and does not add one if missing. It was wrong of eslint-config-prettier to disable that rule. If you get ESLint errors after upgrading, either add `"unicode-bom": "off"` to your config to disable it again, or run ESLint with `--fix` to fix all files according to the rule (add or remove BOM). Thanks to Nicolas Stepien ([@nstepien](https://github.com/nstepien))!

##### Version 8.10.0 (2023-08-03)

- Added: [max-statements-per-line]. Thanks to [@Zamiell](https://github.com/Zamiell)!

##### Version 8.9.0 (2023-07-27)

- Added: [vue/array-element-newline]. Thanks to [@xcatliu](https://github.com/xcatliu)!

##### Version 8.8.0 (2023-03-20)

- Added: [@typescript-eslint/lines-around-comment]. Thanks to [@ttionya](https://github.com/ttionya)!

##### Version 8.7.0 (2023-03-06)

- Added: [@typescript-eslint/block-spacing]. Thanks to [@ttionya](https://github.com/ttionya)!
- Added: [@typescript-eslint/key-spacing]. Thanks to [@ttionya](https://github.com/ttionya)!

##### Version 8.6.0 (2023-01-02)

- Added: [vue/multiline-ternary]. Thanks to [@xcatliu](https://github.com/xcatliu)!

##### Version 8.5.0 (2022-03-02)

- Added: [@typescript-eslint/space-before-blocks]. Thanks to Masafumi Koba ([@ybiquitous](https://github.com/ybiquitous))!

##### Version 8.4.0 (2022-02-19)

- Added: [vue/quote-props]. Thanks to [@xcatliu](https://github.com/xcatliu)!

##### Version 8.3.0 (2021-04-24)

- Added: Support for [@babel/eslint-plugin]. Thanks to Chip Zhang ([@ChipZhang](https://github.com/ChipZhang)) for the heads-up! ([eslint-plugin-babel] is still supported, too.)

##### Version 8.2.0 (2021-04-13)

- Added: [flowtype/quotes]. Thanks to Martin Zlámal ([@mrtnzlml](https://github.com/mrtnzlml))!

##### Version 8.1.0 (2021-02-24)

- Added: [flowtype/object-type-curly-spacing].
- Added: Dummy files for the configs removed in 8.0.0. The dummy files throw an error that try to guide you how to upgrade.

##### Version 8.0.0 (2021-02-21)

- Changed: All configs have been merged into one!

  To upgrade, change:

  ```json
  {
    "extends": [
      "some-other-config-you-use",
      "prettier",
      "prettier/@typescript-eslint",
      "prettier/babel",
      "prettier/flowtype",
      "prettier/react",
      "prettier/standard",
      "prettier/unicorn",
      "prettier/vue"
    ]
  }
  ```

  Into:

  <!-- prettier-ignore -->

  ```json
  {
    "extends": [
      "some-other-config-you-use",
      "prettier"
    ]
  }
  ```

  The `"prettier"` config now includes not just ESLint core rules, but also rules from all plugins. Much simpler!

  So … what’s the catch? Why haven’t we done this earlier? Turns out it’s just a sad mistake. I ([@lydell](https://github.com/lydell)) was confused when testing, and thought that turning off unknown rules in a config was an error. Thanks to Georgii Dolzhykov ([@thorn0](https://github.com/thorn0)) for pointing this out!

  If you use [eslint-plugin-prettier], all you need is [plugin:prettier/recommended]:

  <!-- prettier-ignore -->

  ```json
  {
    "extends": [
      "some-other-config-you-use",
      "plugin:prettier/recommended"
    ]
  }
  ```

  (The ["prettier/prettier" config][prettier-prettier-config] still exists separately. It’s the odd one out. The main `"prettier"` config does *not* include the rules from it.)

- Changed: The CLI helper tool now only prints warnings for [arrow-body-style] and [prefer-arrow-callback], just like other “special rules.” This means that if you’ve decided to use those rules and [eslint-plugin-prettier] at the same time, you’ll get warnings but exit code zero (success).

##### Version 7.2.0 (2021-01-18)

- Added: [@typescript-eslint/object-curly-spacing].
- Added: [react/jsx-newline].

##### Version 7.1.0 (2020-12-19)

- Added: [unicorn/empty-brace-spaces]. Thanks to fisker Cheung ([@fisker](https://github.com/fisker))!

##### Version 7.0.0 (2020-12-05)

- Changed: At least ESLint 7.0.0 is now required.

- Changed: [arrow-body-style] and [prefer-arrow-callback] are no longer turned off by default. They only need to be turned off if you use [eslint-plugin-prettier]. If you do, add `"prettier/prettier"` to your `"extends"` array to turn them off again.

  ```json
  {
    "extends": ["prettier", "prettier/prettier"],
    "plugins": ["prettier"],
    "rules": {
      "prettier/prettier": "error"
    }
  }
  ```

  Alternatively, update [eslint-plugin-prettier] to version 3.2.0 or later which automatically turns off these two rules in its `"plugin:prettier/recommended"` config.

  The CLI helper tool only warns about these rules if you have the `"prettier/prettier"` *rule* enabled for a file.

- Changed: `no-tabs` is now a validatable rule. If you use it, you should enable `allowIndentationTabs` so that the rule works regardless of your Prettier config:

  ```json
  {
    "rules": {
      "no-tabs": ["error", { "allowIndentationTabs": true }]
    }
  }
  ```

- Changed: The CLI helper tool is now called just `eslint-config-prettier` instead of `eslint-config-prettier-check`. This is so that `npx eslint-config-prettier` always works regardless of whether you have already installed `eslint-config-prettier` or not: If you have, the local installation is used; if you haven’t, `npx` downloads a temporary copy.

- Changed: The CLI helper tool no longer requires you to pipe the output of `eslint --print-config` to it. Instead, it does that automatically for you via ESLint API:s added in ESLint v7.

  Before:

  ```
  npx eslint --print-config index.js | npx eslint-config-prettier-check
  ```

  After:

  ```
  npx eslint-config-prettier index.js
  ```

- Improved: The npm package is now 75% smaller.

##### Version 6.15.0 (2020-10-27)

- Added: [@typescript-eslint/space-infix-ops]. Thanks to Masafumi Koba ([@ybiquitous](https://github.com/ybiquitous))!

##### Version 6.14.0 (2020-10-21)

- Added: New [eslint-plugin-vue] rules: \[vue/array-bracket-newline] and \[vue/block-tag-newline]. Thanks to [@xcatliu](https://github.com/xcatliu)!

##### Version 6.13.0 (2020-10-16)

- Added: New rules in [eslint-plugin-vue] 7.0 (which supports Vue 3.0). Thanks to [@xcatliu](https://github.com/xcatliu)!

##### Version 6.12.0 (2020-09-25)

- Added: [@typescript-eslint/comma-dangle]. Thanks to Masafumi Koba ([@ybiquitous](https://github.com/ybiquitous))!

##### Version 6.11.0 (2020-04-21)

- Added: [@typescript-eslint/keyword-spacing]. Thanks to Hans Bergren ([@hbergren](https://github.com/hbergren))!

##### Version 6.10.1 (2020-03-22)

- Improved: Recommend using `npx` when running the CLI helper tool.
- Updated: Mention that eslint-config-prettier has been tested with Prettier 2.0 and the latest versions of plugins.

##### Version 6.10.0 (2020-01-28)

- Added: [@typescript-eslint/comma-spacing]. Thanks to Masafumi Koba ([@ybiquitous](https://github.com/ybiquitous))!

##### Version 6.9.0 (2019-12-27)

- Added: [vue/max-len]. Thanks to [@xcatliu](https://github.com/xcatliu)!

##### Version 6.8.0 (2019-12-25)

- Added: [@typescript-eslint/no-extra-semi]. Thanks to [@xcatliu](https://github.com/xcatliu)!

##### Version 6.7.0 (2019-11-19)

- Added: [@typescript-eslint/space-before-function-paren]. Thanks to Masafumi Koba ([@ybiquitous](https://github.com/ybiquitous))!

##### Version 6.6.0 (2019-11-17)

- Added: New [eslint-plugin-vue] rules: [vue/dot-location] and [vue/keyword-spacing]. Thanks to [@xcatliu](https://github.com/xcatliu)!

##### Version 6.5.0 (2019-10-26)

- Added: Support for [excluding deprecated rules]. Thanks to Alex Ilyaev ([@alexilyaev](https://github.com/alexilyaev))!

##### Version 6.4.0 (2019-10-05)

- Added: [unicorn/no-nested-ternary]. Thanks to Yang Mingshan ([@yangmingshan](https://github.com/yangmingshan))!

##### Version 6.3.0 (2019-09-10)

- Added: [@typescript-eslint/brace-style]. Thanks to Masafumi Koba ([@ybiquitous](https://github.com/ybiquitous))!

##### Version 6.2.0 (2019-09-03)

- Added: [@typescript-eslint/quotes] (as a [special rule][@typescript-eslint/quotes-special]). Thanks to Masafumi Koba ([@ybiquitous](https://github.com/ybiquitous))!

##### Version 6.1.0 (2019-08-19)

- Added: [function-call-argument-newline] (new in ESLint 6.2.0). Thanks to Masafumi Koba ([@ybiquitous](https://github.com/ybiquitous))!

##### Version 6.0.0 (2019-06-25)

- Changed: The CLI helper tool now considers [no-confusing-arrow] to conflict if you use the default value of its `allowParens` option. The default was changed to `true` in ESLint 6, which conflicts with Prettier.

  If the CLI helper tool gives you errors about this after upgrading, the solution is to change this:

  ```json
  {
    "rules": {
      "no-confusing-arrow": ["error"]
    }
  }
  ```

  Into this:

  ```json
  {
    "rules": {
      "no-confusing-arrow": ["error", { "allowParens": false }]
    }
  }
  ```

  The latter works in both ESLint 6 as well as in ESLint 5 and older.

- Improved: `eslint --print-config` usage instructions. The CLI tool help text as well as the documentation has been updated to suggest commands that work in ESLint 6.0 as well as in ESLint 5 and older. (Instead of `eslint --print-config .`, use `eslint --print-config path/to/main.js`.)

##### Version 5.1.0 (2019-06-25)

- Added: [react/jsx-curly-newline]. Thanks to Masafumi Koba ([@ybiquitous](https://github.com/ybiquitous))!

##### Version 5.0.0 (2019-06-15)

- Removed: [react/self-closing-comp]. This rule was added in v4.1.0 not because it *conflicted* with Prettier but because it was *unnecessary* when using Prettier. However, in v1.18.0 [Prettier stopped converting empty elements to self-closing elements][prettier-self-closing]. So the rule is not unnecessary anymore.

  If you use Prettier v1.17.1 or older you should be able to upgrade eslint-config-prettier to v5.0.0 without having to do anything else.

  If you use Prettier v1.18.0 or newer, you might get lint errors about for example changing `<div></div>` into `<div />`. You have two options:

  - Run `eslint --fix` if you prefer to enforce self-closing elements where possible. This should fix all the errors.
  - Add `"react/self-closing-comp": "off"` to your ESLint config if you use autofix from your editor and you face the same [issue as Prettier did][prettier-self-closing].

- Changed: Node.js 6 is no longer officially supported, but v5.0.0 should still work with it.

##### Version 4.3.0 (2019-05-16)

- Added: New [eslint-plugin-vue] rules: [vue/arrow-spacing], [vue/block-spacing], [vue/brace-style] and [vue/comma-dangle].
- Added: New [@typescript-eslint/eslint-plugin] rules: [@typescript-eslint/func-call-spacing] and [@typescript-eslint/semi].

##### Version 4.2.0 (2019-04-25)

- Added: [@typescript-eslint/no-extra-parens]. Thanks to Keiichiro Amemiya ([@Hoishin](https://github.com/Hoishin)) and Jen Gorfine ([@jgorfine](https://github.com/jgorfine))!

##### Version 4.1.0 (2019-02-26)

- Added: [linebreak-style]. Use Prettier’s [end-of-line] option instead.
- Added: [react/self-closing-comp]. Thanks to Gaurav Gupta ([@gaurav5430](https://github.com/gaurav5430))!

##### Version 4.0.0 (2019-01-26)

- Breaking change: Support for [eslint-plugin-typescript] has been removed and replaced with support for its successor [@typescript-eslint/eslint-plugin]. Thanks to TANIGUCHI Masaya ([@ta2gch](https://github.com/ta2gch)) and everyone else who helped with this!
- Changed: [arrow-body-style] and [prefer-arrow-callback] are now marked as [special rules][arrow-special], since they might cause problems if using [eslint-plugin-prettier] and `--fix`. They are turned off by default, and the CLI helper tool will *warn* about them (but not error if you do enable them). This won’t break your linting checks, but do note that these rules will be disabled unless you explicitly enable them again, and that you might see new warnings when running the CLI helper tool.

##### Version 3.6.0 (2019-01-19)

- Added: Support for [eslint-plugin-babel]. Thanks to Matija Marohnić ([@silvenon](https://github.com/silvenon))!

##### Version 3.5.0 (2019-01-16)

- Fixed: The eslint-plugin-vue change from 3.4.0 has been reverted. That change requires eslint-plugin-vue@5, while many use eslint-plugin-vue@4. In other words, it was an accidental breaking change. Also, after thinking about it some more, it makes sense to have a Prettier-specific list of rules, rather than using the `vue/no-layout-rules` list, since there can be layout rules that don’t conflict with but rather complement Prettier.
- Added: New eslint-plugin-vue rules coming in the next version after 5.1.0.

##### Version 3.4.0 (2019-01-13)

- Added: Support for [eslint-plugin-typescript]. Thanks to Jed Fox ([@j-f1](https://github.com/j-f1))!
- Improved: The eslint-plugin-vue integration is now using the `vue/no-layout-rules` config behind the scenes, so it should automatically stay up-to-date when new eslint-plugin-vue versions are released. Thanks to Michał Sajnóg ([@michalsnik](https://github.com/michalsnik))!

##### Version 3.3.0 (2018-11-11)

- Added: The [vue/html-self-closing] rule (as a [special rule][vue/html-self-closing-special]). Thanks to Yamagishi Kazutoshi ([@ykzts](https://github.com/ykzts))!

##### Version 3.2.0 (2018-11-10)

- Added: Support for [eslint-plugin-vue].
- Fixed: The CLI helper tool should now work in Node.js 6 with npm 3 again. Thanks to Grant Snodgrass ([@meeber](https://github.com/meeber))!
- Improved: Updated documentation.

##### Version 3.1.0 (2018-09-22)

- Added: Support for [eslint-plugin-unicorn]. Thanks to John Mars ([@j0hnm4r5](https://github.com/j0hnm4r5))!
- Changed: The [quotes] rule is now allowed to be used to forbid unnecessary backticks. This means that the CLI helper tool no longer can automatically validate it, so you’ll need to refer the [quotes special rule documentation][quotes-special]. Thanks to Nick Petruzzelli ([@npetruzzelli](https://github.com/npetruzzelli))!

##### Version 3.0.1 (2018-08-13)

- Improved: `eslint --print-config` usage instructions.

##### Version 3.0.0 (2018-08-13)

- Breaking change: Dropped Node.js 4 support.

##### Version 2.10.0 (2018-08-13)

- Added: [flowtype/boolean-style]. Thanks to Mayank Agarwal ([@Mayank1791989](https://github.com/Mayank1791989))!
- Added: [react/jsx-child-element-spacing]
- Added: [react/jsx-props-no-multi-spaces]

##### Version 2.9.0 (2017-11-26)

- Added: The [implicit-arrow-linebreak] rule.

##### Version 2.8.0 (2017-11-19)

- Added: The [react/jsx-one-expression-per-line] rule.

##### Version 2.7.0 (2017-11-01)

- Added: The [lines-around-comment] rule (as a [special rule][lines-around-comment-special]). Thanks to Maurice de Beijer ([@mauricedb](https://github.com/mauricedb))!
- Added: The [no-unexpected-multiline] rule (as a [special rule][no-unexpected-multiline-special]). Thanks to Suhas Karanth ([@sudo-suhas](https://github.com/sudo-suhas))!

##### Version 2.6.0 (2017-09-23)

- Added: The [no-floating-decimal] rule.

##### Version 2.5.0 (2017-09-16)

- Added: Support for [eslint-plugin-standard]. Thanks to Christian Pekeler ([@pekeler](https://github.com/pekeler))!

##### Version 2.4.0 (2017-09-02)

- Added: The [function-paren-newline] rule (new in [ESLint 4.6.0]). Thanks to Pierre Vanduynslager ([@vanduynslagerp](https://github.com/vanduynslagerp))!

##### Version 2.3.0 (2017-06-30)

- Added: The (deprecated) [indent-legacy] rule. Thanks to M. Ian Graham ([@miangraham](https://github.com/miangraham))!

##### Version 2.2.0 (2017-06-17)

- Added: New rules from [ESLint 4.0.0]:
  - [array-element-newline]
  - [array-bracket-newline]
  - [semi-style]
  - [switch-colon-spacing]
- Added: [react/jsx-closing-tag-location]

##### Version 2.1.1 (2017-05-20)

- No code changes. Just updates to the readme.

##### Version 2.1.0 (2017-05-13)

- Added: The [no-tabs] rule (as a [special rule][no-tabs-special]). Thanks to Alex Meah ([@AlexMeah](https://github.com/AlexMeah))!

##### Version 2.0.0 (2017-05-07)

- Changed/Improved: The CLI helper tool is now more helpful.

  - The options of special rules are now validated if possible. If a special rule is enabled with non-conflicting options, the CLI no longer warns about it.
  - If only special rules that cannot be automatically checked are found, the CLI no longer exists with a non-zero exit code. Instead, it only warns about the rules.

- Changed: The [no-confusing-arrow] is now a special rule again, since it might conflict with recent Prettier versions.

- Removed: The `react/wrap-multilines` rule (which has been deprecated for a while), since it was removed in eslint-plugin-react@7.

##### Version 1.7.0 (2017-04-19)

- Changed: The [no-confusing-arrow] is no longer a special rule, but simply turned off, since recent Prettier versions make it redundant.
- Improved: The CLI helper tool now has a more helpful message for special rules, and exits with a different status code if only special rules were found. The exit codes are now documented as well.

##### Version 1.6.0 (2017-04-05)

- Added: The [curly] rule. Thanks to Martin Rädlinger ([@formatlos](https://github.com/formatlos))!

##### Version 1.5.0 (2017-03-04)

- Added: The [nonblock-statement-body-position] rule.

##### Version 1.4.1 (2017-02-28)

- Improved: eslint-config-prettier is now part of the [prettier] organization! This version updates all URLs to point to the new home of the project.

##### Version 1.4.0 (2017-02-26)

- Added: The [no-confusing-arrow] rule (as a [special rule][no-confusing-arrow-special]). Thanks to Dominik Ferber ([@dferber90](https://github.com/dferber90))!
- Added: Deprecated or removed rules that might conflict with prettier. Thanks to Dominik Ferber ([@dferber90](https://github.com/dferber90))!

##### Version 1.3.0 (2017-02-21)

- Added: The [template-tag-spacing] rule. Thanks to Thibault Derousseaux ([@tibdex](https://github.com/tibdex))!

##### Version 1.2.0 (2017-02-14)

- Added: The [one-var-declaration-per-line] rule. Thanks to Ruben Oostinga ([@0xR](https://github.com/0xR))!

##### Version 1.1.1 (2017-02-12)

- Minor documentation tweak: Changed "Exceptions" into "Special rules".

##### Version 1.1.0 (2017-02-10)

- Fixed: The [eslint-plugin-react] exclusion rules now actually work.
- Fixed: The CLI helper tool now works in Node.js 4. Thanks to Nathan Friedly ([@nfriedly](https://github.com/nfriedly))!
- Added: Support for [eslint-plugin-flowtype].
- Improved: Minor things for the CLI helper tool.
- Improved: There are now tests for everything.

##### Version 1.0.3 (2017-02-03)

- Fixed: `"extends": "prettier/react"` now actually works.

##### Version 1.0.2 (2017-01-30)

- Improved: CLI helper tool instructions.

##### Version 1.0.1 (2017-01-29)

- No difference from 1.0.0. Just an `npm publish` mistake.

##### Version 1.0.0 (2017-01-29)

- Initial release.

[@babel/eslint-plugin]: https://github.com/babel/babel/tree/main/eslint/babel-eslint-plugin

[@typescript-eslint/block-spacing]: https://github.com/typescript-eslint/typescript-eslint/blob/master/packages/eslint-plugin/docs/rules/block-spacing.md

[@typescript-eslint/brace-style]: https://github.com/typescript-eslint/typescript-eslint/blob/master/packages/eslint-plugin/docs/rules/brace-style.md

[@typescript-eslint/comma-dangle]: https://github.com/typescript-eslint/typescript-eslint/blob/master/packages/eslint-plugin/docs/rules/comma-dangle.md

[@typescript-eslint/comma-spacing]: https://github.com/typescript-eslint/typescript-eslint/blob/master/packages/eslint-plugin/docs/rules/comma-spacing.md

[@typescript-eslint/eslint-plugin]: https://github.com/typescript-eslint/typescript-eslint

[@typescript-eslint/func-call-spacing]: https://github.com/typescript-eslint/typescript-eslint/blob/master/packages/eslint-plugin/docs/rules/func-call-spacing.md

[@typescript-eslint/key-spacing]: https://github.com/typescript-eslint/typescript-eslint/blob/master/packages/eslint-plugin/docs/rules/key-spacing.md

[@typescript-eslint/keyword-spacing]: https://github.com/typescript-eslint/typescript-eslint/blob/master/packages/eslint-plugin/docs/rules/keyword-spacing.md

[@typescript-eslint/lines-around-comment]: https://github.com/typescript-eslint/typescript-eslint/blob/master/packages/eslint-plugin/docs/rules/lines-around-comment.md

[@typescript-eslint/no-extra-parens]: https://github.com/typescript-eslint/typescript-eslint/blob/master/packages/eslint-plugin/docs/rules/no-extra-parens.md

[@typescript-eslint/no-extra-semi]: https://github.com/typescript-eslint/typescript-eslint/blob/master/packages/eslint-plugin/docs/rules/no-extra-semi.md

[@typescript-eslint/object-curly-spacing]: https://github.com/typescript-eslint/typescript-eslint/blob/master/packages/eslint-plugin/docs/rules/object-curly-spacing.md

[@typescript-eslint/quotes-special]: https://github.com/prettier/eslint-config-prettier/blob/857257179fe69715362dfa9300762d6e534c0603/README.md#quotes

[@typescript-eslint/quotes]: https://github.com/typescript-eslint/typescript-eslint/blob/master/packages/eslint-plugin/docs/rules/quotes.md

[@typescript-eslint/semi]: https://github.com/typescript-eslint/typescript-eslint/blob/master/packages/eslint-plugin/docs/rules/semi.md

[@typescript-eslint/space-before-blocks]: https://github.com/typescript-eslint/typescript-eslint/blob/master/packages/eslint-plugin/docs/rules/space-before-blocks.md

[@typescript-eslint/space-before-function-paren]: https://github.com/typescript-eslint/typescript-eslint/blob/master/packages/eslint-plugin/docs/rules/space-before-function-paren.md

[@typescript-eslint/space-infix-ops]: https://github.com/typescript-eslint/typescript-eslint/blob/master/packages/eslint-plugin/docs/rules/space-infix-ops.md

[array-bracket-newline]: https://eslint.org/docs/rules/array-bracket-newline

[array-element-newline]: https://eslint.org/docs/rules/array-element-newline

[arrow-body-style]: https://eslint.org/docs/rules/arrow-body-style

[arrow-special]: https://github.com/prettier/eslint-config-prettier/blob/2c842675e55b91aecaef6f997d234ebf2d220ffb/README.md#arrow-body-style-and-prefer-arrow-callback

[curly]: https://eslint.org/docs/rules/curly

[deprecated-8.53.0]: https://eslint.org/blog/2023/10/deprecating-formatting-rules/

[end-of-line]: https://prettier.io/docs/en/options.html#end-of-line

[eslint 4.0.0]: https://eslint.org/blog/2017/06/eslint-v4.0.0-released

[eslint 4.6.0]: https://eslint.org/blog/2017/09/eslint-v4.6.0-released

[ESLINT_USE_FLAT_CONFIG]: https://github.com/prettier/eslint-config-prettier#eslint_use_flat_config-environment-variable

[eslint-plugin-babel]: https://github.com/babel/eslint-plugin-babel

[eslint-plugin-flowtype]: https://github.com/gajus/eslint-plugin-flowtype

[eslint-plugin-prettier]: https://github.com/prettier/eslint-plugin-prettier

[eslint-plugin-react]: https://github.com/yannickcr/eslint-plugin-react

[eslint-plugin-standard]: https://github.com/xjamundx/eslint-plugin-standard

[eslint-plugin-typescript]: https://github.com/bradzacher/eslint-plugin-typescript

[eslint-plugin-unicorn]: https://github.com/sindresorhus/eslint-plugin-unicorn

[eslint-plugin-vue]: https://github.com/vuejs/eslint-plugin-vue

[excluding deprecated rules]: https://github.com/prettier/eslint-config-prettier/tree/9f6b59486ad742dc12ad3be157ddff5f8454ef7a#excluding-deprecated-rules

[flowtype/boolean-style]: https://github.com/gajus/eslint-plugin-flowtype#eslint-plugin-flowtype-rules-boolean-style

[flowtype/object-type-curly-spacing]: https://github.com/gajus/eslint-plugin-flowtype#eslint-plugin-flowtype-rules-object-type-curly-spacing

[flowtype/quotes]: https://github.com/gajus/eslint-plugin-flowtype#eslint-plugin-flowtype-rules-quotes

[function-call-argument-newline]: https://eslint.org/docs/rules/function-call-argument-newline

[function-paren-newline]: https://eslint.org/docs/rules/function-paren-newline

[implicit-arrow-linebreak]: https://eslint.org/docs/rules/implicit-arrow-linebreak

[indent-legacy]: https://eslint.org/docs/rules/indent-legacy

[linebreak-style]: https://eslint.org/docs/rules/linebreak-style

[lines-around-comment-special]: https://github.com/prettier/eslint-config-prettier/blob/5399175c37466747aae9d407021dffec2c169c8b/README.md#lines-around-comment

[lines-around-comment]: https://eslint.org/docs/rules/lines-around-comment

[max-statements-per-line]: https://eslint.org/docs/latest/rules/max-statements-per-line

[no-confusing-arrow-special]: https://github.com/prettier/eslint-config-prettier/blob/08ac5bcc25c9cdc71864b4a1e4191e7d28dd2bc2/README.md#no-confusing-arrow

[no-confusing-arrow]: https://eslint.org/docs/rules/no-confusing-arrow

[no-floating-decimal]: https://eslint.org/docs/rules/no-floating-decimal

[no-tabs-special]: https://github.com/prettier/eslint-config-prettier/blob/dfa6e2b51f11a8001e9e7d38b78f03c7d75175ec/README.md#no-tabs

[no-tabs]: https://eslint.org/docs/rules/no-tabs

[no-unexpected-multiline-special]: https://github.com/prettier/eslint-config-prettier/blob/5399175c37466747aae9d407021dffec2c169c8b/README.md#no-unexpected-multiline

[no-unexpected-multiline]: https://eslint.org/docs/rules/no-unexpected-multiline

[nonblock-statement-body-position]: https://eslint.org/docs/rules/nonblock-statement-body-position

[one-var-declaration-per-line]: https://eslint.org/docs/rules/one-var-declaration-per-line

[plugin:prettier/recommended]: https://github.com/prettier/eslint-plugin-prettier#recommended-configuration

[prefer-arrow-callback]: https://eslint.org/docs/rules/prefer-arrow-callback

[prettier-prettier-config]: https://github.com/prettier/eslint-config-prettier/tree/03c79b9306892d4dbc828ce723813ef015baabc5#arrow-body-style-and-prefer-arrow-callback

[prettier-self-closing]: https://prettier.io/blog/2019/06/06/1.18.0.html#stop-converting-empty-jsx-elements-to-self-closing-elements-6127-by-duailibe

[prettier]: https://github.com/prettier

[quotes-special]: https://github.com/prettier/eslint-config-prettier/blob/8d264cd0a7f06c12e2e05415e0282a4f8f21ebc9/README.md#quotes

[quotes]: https://eslint.org/docs/rules/quotes

[react/jsx-child-element-spacing]: https://github.com/yannickcr/eslint-plugin-react/blob/master/docs/rules/jsx-child-element-spacing.md

[react/jsx-closing-tag-location]: https://github.com/yannickcr/eslint-plugin-react/blob/master/docs/rules/jsx-closing-tag-location.md

[react/jsx-curly-newline]: https://github.com/yannickcr/eslint-plugin-react/blob/master/docs/rules/jsx-curly-newline.md

[react/jsx-newline]: https://github.com/yannickcr/eslint-plugin-react/blob/master/docs/rules/jsx-newline.md

[react/jsx-one-expression-per-line]: https://github.com/yannickcr/eslint-plugin-react/blob/master/docs/rules/jsx-one-expression-per-line.md

[react/jsx-props-no-multi-spaces]: https://github.com/yannickcr/eslint-plugin-react/blob/master/docs/rules/jsx-props-no-multi-spaces.md

[react/self-closing-comp]: https://github.com/yannickcr/eslint-plugin-react/blob/master/docs/rules/self-closing-comp.md

[semi-style]: https://eslint.org/docs/rules/semi-style

[switch-colon-spacing]: https://eslint.org/docs/rules/switch-colon-spacing

[template-tag-spacing]: https://eslint.org/docs/rules/template-tag-spacing

[unicode-bom]: https://eslint.org/docs/rules/unicode-bom

[unicorn/empty-brace-spaces]: https://github.com/sindresorhus/eslint-plugin-unicorn/blob/master/docs/rules/empty-brace-spaces.md

[unicorn/no-nested-ternary]: https://github.com/sindresorhus/eslint-plugin-unicorn/blob/master/docs/rules/no-nested-ternary.md

[unicorn/template-indent-special]: https://github.com/prettier/eslint-config-prettier/blob/4110dff0c5b258be37506ecee9578cd7ff8e4759/README.md#unicorntemplate-indent

[unicorn/template-indent]: https://github.com/sindresorhus/eslint-plugin-unicorn/blob/master/docs/rules/template-indent.md

[vue/array-element-newline]: https://github.com/vuejs/eslint-plugin-vue/blob/master/docs/rules/array-element-newline.md

[vue/arrow-spacing]: https://github.com/vuejs/eslint-plugin-vue/blob/master/docs/rules/arrow-spacing.md

[vue/block-spacing]: https://github.com/vuejs/eslint-plugin-vue/blob/master/docs/rules/block-spacing.md

[vue/brace-style]: https://github.com/vuejs/eslint-plugin-vue/blob/master/docs/rules/brace-style.md

[vue/comma-dangle]: https://github.com/vuejs/eslint-plugin-vue/blob/master/docs/rules/comma-dangle.md

[vue/dot-location]: https://github.com/vuejs/eslint-plugin-vue/blob/master/docs/rules/dot-location.md

[vue/html-self-closing-special]: https://github.com/prettier/eslint-config-prettier/blob/d5e7af986221df5faedc12893d8dc3150a808693/README.md#vuehtml-self-closing

[vue/html-self-closing]: https://github.com/vuejs/eslint-plugin-vue/blob/master/docs/rules/html-self-closing.md

[vue/keyword-spacing]: https://github.com/vuejs/eslint-plugin-vue/blob/master/docs/rules/array-bracket-newline.md

[vue/keyword-spacing]: https://github.com/vuejs/eslint-plugin-vue/blob/master/docs/rules/block-tag-newline.md

[vue/keyword-spacing]: https://github.com/vuejs/eslint-plugin-vue/blob/master/docs/rules/keyword-spacing.md

[vue/max-len]: https://github.com/vuejs/eslint-plugin-vue/blob/master/docs/rules/max-len.md

[vue/multiline-ternary]: https://github.com/vuejs/eslint-plugin-vue/blob/master/docs/rules/multiline-ternary.md

[vue/quote-props]: https://github.com/vuejs/eslint-plugin-vue/blob/master/docs/rules/quote-props.md
renovate bot added a commit to andrei-picus-tink/auto-renovate that referenced this pull request Sep 6, 2025
| datasource | package                | from   | to     |
| ---------- | ---------------------- | ------ | ------ |
| npm        | eslint-config-prettier | 10.1.5 | 10.1.8 |


## [v10.1.8](https://github.com/prettier/eslint-config-prettier/releases/tag/v10.1.8)

### eslint-config-prettier

#### 10.1.5

##### Patch Changes

- [#332](prettier/eslint-config-prettier#332) [`60fef02`](prettier/eslint-config-prettier@60fef02) Thanks [@JounQin](https://github.com/JounQin)! - chore: add `funding` field into `package.json`

#### 10.1.4

##### Patch Changes

- [#328](prettier/eslint-config-prettier#328) [`94b4799`](prettier/eslint-config-prettier@94b4799) Thanks [@silvenon](https://github.com/silvenon)! - fix(cli): do not crash on no rules configured

#### 10.1.3

##### Patch Changes

- [#325](prettier/eslint-config-prettier#325) [`4e95a1d`](prettier/eslint-config-prettier@4e95a1d) Thanks [@pilikan](https://github.com/pilikan)! - fix: this package is `commonjs`, align its types correctly

#### 10.1.2

##### Patch Changes

- [#321](prettier/eslint-config-prettier#321) [`a8768bf`](prettier/eslint-config-prettier@a8768bf) Thanks [@Fdawgs](https://github.com/Fdawgs)! - chore(package): add homepage for some 3rd-party registry - see [#321](prettier/eslint-config-prettier#321) for more details

#### 10.1.1

##### Patch Changes

- [#309](prettier/eslint-config-prettier#309) [`eb56a5e`](prettier/eslint-config-prettier@eb56a5e) Thanks [@JounQin](https://github.com/JounQin)! - fix: separate the `/flat` entry for compatibility

  For flat config users, the previous `"eslint-config-prettier"` entry still works, but `"eslint-config-prettier/flat"` adds a new `name` property for [config-inspector](https://eslint.org/blog/2024/04/eslint-config-inspector/), we just can't add it for the default entry for compatibility.

  See also [#308](prettier/eslint-config-prettier#308)

  ```ts
  // before
  import eslintConfigPrettier from "eslint-config-prettier";

  // after
  import eslintConfigPrettier from "eslint-config-prettier/flat";
  ```

#### 10.1.0

##### Minor Changes

- [#306](prettier/eslint-config-prettier#306) [`56e2e34`](prettier/eslint-config-prettier@56e2e34) Thanks [@JounQin](https://github.com/JounQin)! - feat: migrate to exports field

#### 10.0.3

##### Patch Changes

- [#294](prettier/eslint-config-prettier#294) [`8dbbd6d`](prettier/eslint-config-prettier@8dbbd6d) Thanks [@FloEdelmann](https://github.com/FloEdelmann)! - feat: add name to config

- [#280](prettier/eslint-config-prettier#280) [`cba5737`](prettier/eslint-config-prettier@cba5737) Thanks [@zanminkian](https://github.com/zanminkian)! - feat: add declaration file

#### 10.0.2

##### Patch Changes

- [#299](prettier/eslint-config-prettier#299) [`e750edc`](prettier/eslint-config-prettier@e750edc) Thanks [@Fdawgs](https://github.com/Fdawgs)! - chore(package): explicitly declare js module type

#### 10.0.0

##### Major Changes

- [#272](prettier/eslint-config-prettier#272) [`5be64be`](prettier/eslint-config-prettier@5be64be) Thanks [@abrahamguo](https://github.com/abrahamguo)! - add support for [@Stylistic](https://github.com/stylistic) formatting rules

#### Versions before 10.0.0

##### Version 9.1.0 (2023-12-02)

- Added: [unicorn/template-indent], (as a [special rule][unicorn/template-indent-special]). Thanks to Gürgün Dayıoğlu ([@gurgunday](https://github.com/gurgunday))!
- Changed: All the [formatting rules that were deprecated in ESLint 8.53.0][deprecated-8.53.0] are now excluded if you set the `ESLINT_CONFIG_PRETTIER_NO_DEPRECATED` environment variable.

##### Version 9.0.0 (2023-08-05)

- Added: The CLI helper tool now works with eslint.config.js (flat config). Just like ESLint itself, the CLI tool automatically first tries eslint.config.js and then eslintrc, and you can force which one to use by setting the [ESLINT\_USE\_FLAT\_CONFIG][ESLINT_USE_FLAT_CONFIG] environment variable. Note that the *config* of eslint-config-prettier has always been compatible with eslint.config.js (flat config) – it was just the CLI tool that needed updating. On top of that, the docs have been updated to mention how to use both eslint.config.js (flat config) and eslintrc, and the tests now test both config systems.
- Changed: [unicode-bom] is no longer turned off. Prettier preserves the BOM if you have one, and does not add one if missing. It was wrong of eslint-config-prettier to disable that rule. If you get ESLint errors after upgrading, either add `"unicode-bom": "off"` to your config to disable it again, or run ESLint with `--fix` to fix all files according to the rule (add or remove BOM). Thanks to Nicolas Stepien ([@nstepien](https://github.com/nstepien))!

##### Version 8.10.0 (2023-08-03)

- Added: [max-statements-per-line]. Thanks to [@Zamiell](https://github.com/Zamiell)!

##### Version 8.9.0 (2023-07-27)

- Added: [vue/array-element-newline]. Thanks to [@xcatliu](https://github.com/xcatliu)!

##### Version 8.8.0 (2023-03-20)

- Added: [@typescript-eslint/lines-around-comment]. Thanks to [@ttionya](https://github.com/ttionya)!

##### Version 8.7.0 (2023-03-06)

- Added: [@typescript-eslint/block-spacing]. Thanks to [@ttionya](https://github.com/ttionya)!
- Added: [@typescript-eslint/key-spacing]. Thanks to [@ttionya](https://github.com/ttionya)!

##### Version 8.6.0 (2023-01-02)

- Added: [vue/multiline-ternary]. Thanks to [@xcatliu](https://github.com/xcatliu)!

##### Version 8.5.0 (2022-03-02)

- Added: [@typescript-eslint/space-before-blocks]. Thanks to Masafumi Koba ([@ybiquitous](https://github.com/ybiquitous))!

##### Version 8.4.0 (2022-02-19)

- Added: [vue/quote-props]. Thanks to [@xcatliu](https://github.com/xcatliu)!

##### Version 8.3.0 (2021-04-24)

- Added: Support for [@babel/eslint-plugin]. Thanks to Chip Zhang ([@ChipZhang](https://github.com/ChipZhang)) for the heads-up! ([eslint-plugin-babel] is still supported, too.)

##### Version 8.2.0 (2021-04-13)

- Added: [flowtype/quotes]. Thanks to Martin Zlámal ([@mrtnzlml](https://github.com/mrtnzlml))!

##### Version 8.1.0 (2021-02-24)

- Added: [flowtype/object-type-curly-spacing].
- Added: Dummy files for the configs removed in 8.0.0. The dummy files throw an error that try to guide you how to upgrade.

##### Version 8.0.0 (2021-02-21)

- Changed: All configs have been merged into one!

  To upgrade, change:

  ```json
  {
    "extends": [
      "some-other-config-you-use",
      "prettier",
      "prettier/@typescript-eslint",
      "prettier/babel",
      "prettier/flowtype",
      "prettier/react",
      "prettier/standard",
      "prettier/unicorn",
      "prettier/vue"
    ]
  }
  ```

  Into:

  <!-- prettier-ignore -->

  ```json
  {
    "extends": [
      "some-other-config-you-use",
      "prettier"
    ]
  }
  ```

  The `"prettier"` config now includes not just ESLint core rules, but also rules from all plugins. Much simpler!

  So … what’s the catch? Why haven’t we done this earlier? Turns out it’s just a sad mistake. I ([@lydell](https://github.com/lydell)) was confused when testing, and thought that turning off unknown rules in a config was an error. Thanks to Georgii Dolzhykov ([@thorn0](https://github.com/thorn0)) for pointing this out!

  If you use [eslint-plugin-prettier], all you need is [plugin:prettier/recommended]:

  <!-- prettier-ignore -->

  ```json
  {
    "extends": [
      "some-other-config-you-use",
      "plugin:prettier/recommended"
    ]
  }
  ```

  (The ["prettier/prettier" config][prettier-prettier-config] still exists separately. It’s the odd one out. The main `"prettier"` config does *not* include the rules from it.)

- Changed: The CLI helper tool now only prints warnings for [arrow-body-style] and [prefer-arrow-callback], just like other “special rules.” This means that if you’ve decided to use those rules and [eslint-plugin-prettier] at the same time, you’ll get warnings but exit code zero (success).

##### Version 7.2.0 (2021-01-18)

- Added: [@typescript-eslint/object-curly-spacing].
- Added: [react/jsx-newline].

##### Version 7.1.0 (2020-12-19)

- Added: [unicorn/empty-brace-spaces]. Thanks to fisker Cheung ([@fisker](https://github.com/fisker))!

##### Version 7.0.0 (2020-12-05)

- Changed: At least ESLint 7.0.0 is now required.

- Changed: [arrow-body-style] and [prefer-arrow-callback] are no longer turned off by default. They only need to be turned off if you use [eslint-plugin-prettier]. If you do, add `"prettier/prettier"` to your `"extends"` array to turn them off again.

  ```json
  {
    "extends": ["prettier", "prettier/prettier"],
    "plugins": ["prettier"],
    "rules": {
      "prettier/prettier": "error"
    }
  }
  ```

  Alternatively, update [eslint-plugin-prettier] to version 3.2.0 or later which automatically turns off these two rules in its `"plugin:prettier/recommended"` config.

  The CLI helper tool only warns about these rules if you have the `"prettier/prettier"` *rule* enabled for a file.

- Changed: `no-tabs` is now a validatable rule. If you use it, you should enable `allowIndentationTabs` so that the rule works regardless of your Prettier config:

  ```json
  {
    "rules": {
      "no-tabs": ["error", { "allowIndentationTabs": true }]
    }
  }
  ```

- Changed: The CLI helper tool is now called just `eslint-config-prettier` instead of `eslint-config-prettier-check`. This is so that `npx eslint-config-prettier` always works regardless of whether you have already installed `eslint-config-prettier` or not: If you have, the local installation is used; if you haven’t, `npx` downloads a temporary copy.

- Changed: The CLI helper tool no longer requires you to pipe the output of `eslint --print-config` to it. Instead, it does that automatically for you via ESLint API:s added in ESLint v7.

  Before:

  ```
  npx eslint --print-config index.js | npx eslint-config-prettier-check
  ```

  After:

  ```
  npx eslint-config-prettier index.js
  ```

- Improved: The npm package is now 75% smaller.

##### Version 6.15.0 (2020-10-27)

- Added: [@typescript-eslint/space-infix-ops]. Thanks to Masafumi Koba ([@ybiquitous](https://github.com/ybiquitous))!

##### Version 6.14.0 (2020-10-21)

- Added: New [eslint-plugin-vue] rules: \[vue/array-bracket-newline] and \[vue/block-tag-newline]. Thanks to [@xcatliu](https://github.com/xcatliu)!

##### Version 6.13.0 (2020-10-16)

- Added: New rules in [eslint-plugin-vue] 7.0 (which supports Vue 3.0). Thanks to [@xcatliu](https://github.com/xcatliu)!

##### Version 6.12.0 (2020-09-25)

- Added: [@typescript-eslint/comma-dangle]. Thanks to Masafumi Koba ([@ybiquitous](https://github.com/ybiquitous))!

##### Version 6.11.0 (2020-04-21)

- Added: [@typescript-eslint/keyword-spacing]. Thanks to Hans Bergren ([@hbergren](https://github.com/hbergren))!

##### Version 6.10.1 (2020-03-22)

- Improved: Recommend using `npx` when running the CLI helper tool.
- Updated: Mention that eslint-config-prettier has been tested with Prettier 2.0 and the latest versions of plugins.

##### Version 6.10.0 (2020-01-28)

- Added: [@typescript-eslint/comma-spacing]. Thanks to Masafumi Koba ([@ybiquitous](https://github.com/ybiquitous))!

##### Version 6.9.0 (2019-12-27)

- Added: [vue/max-len]. Thanks to [@xcatliu](https://github.com/xcatliu)!

##### Version 6.8.0 (2019-12-25)

- Added: [@typescript-eslint/no-extra-semi]. Thanks to [@xcatliu](https://github.com/xcatliu)!

##### Version 6.7.0 (2019-11-19)

- Added: [@typescript-eslint/space-before-function-paren]. Thanks to Masafumi Koba ([@ybiquitous](https://github.com/ybiquitous))!

##### Version 6.6.0 (2019-11-17)

- Added: New [eslint-plugin-vue] rules: [vue/dot-location] and [vue/keyword-spacing]. Thanks to [@xcatliu](https://github.com/xcatliu)!

##### Version 6.5.0 (2019-10-26)

- Added: Support for [excluding deprecated rules]. Thanks to Alex Ilyaev ([@alexilyaev](https://github.com/alexilyaev))!

##### Version 6.4.0 (2019-10-05)

- Added: [unicorn/no-nested-ternary]. Thanks to Yang Mingshan ([@yangmingshan](https://github.com/yangmingshan))!

##### Version 6.3.0 (2019-09-10)

- Added: [@typescript-eslint/brace-style]. Thanks to Masafumi Koba ([@ybiquitous](https://github.com/ybiquitous))!

##### Version 6.2.0 (2019-09-03)

- Added: [@typescript-eslint/quotes] (as a [special rule][@typescript-eslint/quotes-special]). Thanks to Masafumi Koba ([@ybiquitous](https://github.com/ybiquitous))!

##### Version 6.1.0 (2019-08-19)

- Added: [function-call-argument-newline] (new in ESLint 6.2.0). Thanks to Masafumi Koba ([@ybiquitous](https://github.com/ybiquitous))!

##### Version 6.0.0 (2019-06-25)

- Changed: The CLI helper tool now considers [no-confusing-arrow] to conflict if you use the default value of its `allowParens` option. The default was changed to `true` in ESLint 6, which conflicts with Prettier.

  If the CLI helper tool gives you errors about this after upgrading, the solution is to change this:

  ```json
  {
    "rules": {
      "no-confusing-arrow": ["error"]
    }
  }
  ```

  Into this:

  ```json
  {
    "rules": {
      "no-confusing-arrow": ["error", { "allowParens": false }]
    }
  }
  ```

  The latter works in both ESLint 6 as well as in ESLint 5 and older.

- Improved: `eslint --print-config` usage instructions. The CLI tool help text as well as the documentation has been updated to suggest commands that work in ESLint 6.0 as well as in ESLint 5 and older. (Instead of `eslint --print-config .`, use `eslint --print-config path/to/main.js`.)

##### Version 5.1.0 (2019-06-25)

- Added: [react/jsx-curly-newline]. Thanks to Masafumi Koba ([@ybiquitous](https://github.com/ybiquitous))!

##### Version 5.0.0 (2019-06-15)

- Removed: [react/self-closing-comp]. This rule was added in v4.1.0 not because it *conflicted* with Prettier but because it was *unnecessary* when using Prettier. However, in v1.18.0 [Prettier stopped converting empty elements to self-closing elements][prettier-self-closing]. So the rule is not unnecessary anymore.

  If you use Prettier v1.17.1 or older you should be able to upgrade eslint-config-prettier to v5.0.0 without having to do anything else.

  If you use Prettier v1.18.0 or newer, you might get lint errors about for example changing `<div></div>` into `<div />`. You have two options:

  - Run `eslint --fix` if you prefer to enforce self-closing elements where possible. This should fix all the errors.
  - Add `"react/self-closing-comp": "off"` to your ESLint config if you use autofix from your editor and you face the same [issue as Prettier did][prettier-self-closing].

- Changed: Node.js 6 is no longer officially supported, but v5.0.0 should still work with it.

##### Version 4.3.0 (2019-05-16)

- Added: New [eslint-plugin-vue] rules: [vue/arrow-spacing], [vue/block-spacing], [vue/brace-style] and [vue/comma-dangle].
- Added: New [@typescript-eslint/eslint-plugin] rules: [@typescript-eslint/func-call-spacing] and [@typescript-eslint/semi].

##### Version 4.2.0 (2019-04-25)

- Added: [@typescript-eslint/no-extra-parens]. Thanks to Keiichiro Amemiya ([@Hoishin](https://github.com/Hoishin)) and Jen Gorfine ([@jgorfine](https://github.com/jgorfine))!

##### Version 4.1.0 (2019-02-26)

- Added: [linebreak-style]. Use Prettier’s [end-of-line] option instead.
- Added: [react/self-closing-comp]. Thanks to Gaurav Gupta ([@gaurav5430](https://github.com/gaurav5430))!

##### Version 4.0.0 (2019-01-26)

- Breaking change: Support for [eslint-plugin-typescript] has been removed and replaced with support for its successor [@typescript-eslint/eslint-plugin]. Thanks to TANIGUCHI Masaya ([@ta2gch](https://github.com/ta2gch)) and everyone else who helped with this!
- Changed: [arrow-body-style] and [prefer-arrow-callback] are now marked as [special rules][arrow-special], since they might cause problems if using [eslint-plugin-prettier] and `--fix`. They are turned off by default, and the CLI helper tool will *warn* about them (but not error if you do enable them). This won’t break your linting checks, but do note that these rules will be disabled unless you explicitly enable them again, and that you might see new warnings when running the CLI helper tool.

##### Version 3.6.0 (2019-01-19)

- Added: Support for [eslint-plugin-babel]. Thanks to Matija Marohnić ([@silvenon](https://github.com/silvenon))!

##### Version 3.5.0 (2019-01-16)

- Fixed: The eslint-plugin-vue change from 3.4.0 has been reverted. That change requires eslint-plugin-vue@5, while many use eslint-plugin-vue@4. In other words, it was an accidental breaking change. Also, after thinking about it some more, it makes sense to have a Prettier-specific list of rules, rather than using the `vue/no-layout-rules` list, since there can be layout rules that don’t conflict with but rather complement Prettier.
- Added: New eslint-plugin-vue rules coming in the next version after 5.1.0.

##### Version 3.4.0 (2019-01-13)

- Added: Support for [eslint-plugin-typescript]. Thanks to Jed Fox ([@j-f1](https://github.com/j-f1))!
- Improved: The eslint-plugin-vue integration is now using the `vue/no-layout-rules` config behind the scenes, so it should automatically stay up-to-date when new eslint-plugin-vue versions are released. Thanks to Michał Sajnóg ([@michalsnik](https://github.com/michalsnik))!

##### Version 3.3.0 (2018-11-11)

- Added: The [vue/html-self-closing] rule (as a [special rule][vue/html-self-closing-special]). Thanks to Yamagishi Kazutoshi ([@ykzts](https://github.com/ykzts))!

##### Version 3.2.0 (2018-11-10)

- Added: Support for [eslint-plugin-vue].
- Fixed: The CLI helper tool should now work in Node.js 6 with npm 3 again. Thanks to Grant Snodgrass ([@meeber](https://github.com/meeber))!
- Improved: Updated documentation.

##### Version 3.1.0 (2018-09-22)

- Added: Support for [eslint-plugin-unicorn]. Thanks to John Mars ([@j0hnm4r5](https://github.com/j0hnm4r5))!
- Changed: The [quotes] rule is now allowed to be used to forbid unnecessary backticks. This means that the CLI helper tool no longer can automatically validate it, so you’ll need to refer the [quotes special rule documentation][quotes-special]. Thanks to Nick Petruzzelli ([@npetruzzelli](https://github.com/npetruzzelli))!

##### Version 3.0.1 (2018-08-13)

- Improved: `eslint --print-config` usage instructions.

##### Version 3.0.0 (2018-08-13)

- Breaking change: Dropped Node.js 4 support.

##### Version 2.10.0 (2018-08-13)

- Added: [flowtype/boolean-style]. Thanks to Mayank Agarwal ([@Mayank1791989](https://github.com/Mayank1791989))!
- Added: [react/jsx-child-element-spacing]
- Added: [react/jsx-props-no-multi-spaces]

##### Version 2.9.0 (2017-11-26)

- Added: The [implicit-arrow-linebreak] rule.

##### Version 2.8.0 (2017-11-19)

- Added: The [react/jsx-one-expression-per-line] rule.

##### Version 2.7.0 (2017-11-01)

- Added: The [lines-around-comment] rule (as a [special rule][lines-around-comment-special]). Thanks to Maurice de Beijer ([@mauricedb](https://github.com/mauricedb))!
- Added: The [no-unexpected-multiline] rule (as a [special rule][no-unexpected-multiline-special]). Thanks to Suhas Karanth ([@sudo-suhas](https://github.com/sudo-suhas))!

##### Version 2.6.0 (2017-09-23)

- Added: The [no-floating-decimal] rule.

##### Version 2.5.0 (2017-09-16)

- Added: Support for [eslint-plugin-standard]. Thanks to Christian Pekeler ([@pekeler](https://github.com/pekeler))!

##### Version 2.4.0 (2017-09-02)

- Added: The [function-paren-newline] rule (new in [ESLint 4.6.0]). Thanks to Pierre Vanduynslager ([@vanduynslagerp](https://github.com/vanduynslagerp))!

##### Version 2.3.0 (2017-06-30)

- Added: The (deprecated) [indent-legacy] rule. Thanks to M. Ian Graham ([@miangraham](https://github.com/miangraham))!

##### Version 2.2.0 (2017-06-17)

- Added: New rules from [ESLint 4.0.0]:
  - [array-element-newline]
  - [array-bracket-newline]
  - [semi-style]
  - [switch-colon-spacing]
- Added: [react/jsx-closing-tag-location]

##### Version 2.1.1 (2017-05-20)

- No code changes. Just updates to the readme.

##### Version 2.1.0 (2017-05-13)

- Added: The [no-tabs] rule (as a [special rule][no-tabs-special]). Thanks to Alex Meah ([@AlexMeah](https://github.com/AlexMeah))!

##### Version 2.0.0 (2017-05-07)

- Changed/Improved: The CLI helper tool is now more helpful.

  - The options of special rules are now validated if possible. If a special rule is enabled with non-conflicting options, the CLI no longer warns about it.
  - If only special rules that cannot be automatically checked are found, the CLI no longer exists with a non-zero exit code. Instead, it only warns about the rules.

- Changed: The [no-confusing-arrow] is now a special rule again, since it might conflict with recent Prettier versions.

- Removed: The `react/wrap-multilines` rule (which has been deprecated for a while), since it was removed in eslint-plugin-react@7.

##### Version 1.7.0 (2017-04-19)

- Changed: The [no-confusing-arrow] is no longer a special rule, but simply turned off, since recent Prettier versions make it redundant.
- Improved: The CLI helper tool now has a more helpful message for special rules, and exits with a different status code if only special rules were found. The exit codes are now documented as well.

##### Version 1.6.0 (2017-04-05)

- Added: The [curly] rule. Thanks to Martin Rädlinger ([@formatlos](https://github.com/formatlos))!

##### Version 1.5.0 (2017-03-04)

- Added: The [nonblock-statement-body-position] rule.

##### Version 1.4.1 (2017-02-28)

- Improved: eslint-config-prettier is now part of the [prettier] organization! This version updates all URLs to point to the new home of the project.

##### Version 1.4.0 (2017-02-26)

- Added: The [no-confusing-arrow] rule (as a [special rule][no-confusing-arrow-special]). Thanks to Dominik Ferber ([@dferber90](https://github.com/dferber90))!
- Added: Deprecated or removed rules that might conflict with prettier. Thanks to Dominik Ferber ([@dferber90](https://github.com/dferber90))!

##### Version 1.3.0 (2017-02-21)

- Added: The [template-tag-spacing] rule. Thanks to Thibault Derousseaux ([@tibdex](https://github.com/tibdex))!

##### Version 1.2.0 (2017-02-14)

- Added: The [one-var-declaration-per-line] rule. Thanks to Ruben Oostinga ([@0xR](https://github.com/0xR))!

##### Version 1.1.1 (2017-02-12)

- Minor documentation tweak: Changed "Exceptions" into "Special rules".

##### Version 1.1.0 (2017-02-10)

- Fixed: The [eslint-plugin-react] exclusion rules now actually work.
- Fixed: The CLI helper tool now works in Node.js 4. Thanks to Nathan Friedly ([@nfriedly](https://github.com/nfriedly))!
- Added: Support for [eslint-plugin-flowtype].
- Improved: Minor things for the CLI helper tool.
- Improved: There are now tests for everything.

##### Version 1.0.3 (2017-02-03)

- Fixed: `"extends": "prettier/react"` now actually works.

##### Version 1.0.2 (2017-01-30)

- Improved: CLI helper tool instructions.

##### Version 1.0.1 (2017-01-29)

- No difference from 1.0.0. Just an `npm publish` mistake.

##### Version 1.0.0 (2017-01-29)

- Initial release.

[@babel/eslint-plugin]: https://github.com/babel/babel/tree/main/eslint/babel-eslint-plugin

[@typescript-eslint/block-spacing]: https://github.com/typescript-eslint/typescript-eslint/blob/master/packages/eslint-plugin/docs/rules/block-spacing.md

[@typescript-eslint/brace-style]: https://github.com/typescript-eslint/typescript-eslint/blob/master/packages/eslint-plugin/docs/rules/brace-style.md

[@typescript-eslint/comma-dangle]: https://github.com/typescript-eslint/typescript-eslint/blob/master/packages/eslint-plugin/docs/rules/comma-dangle.md

[@typescript-eslint/comma-spacing]: https://github.com/typescript-eslint/typescript-eslint/blob/master/packages/eslint-plugin/docs/rules/comma-spacing.md

[@typescript-eslint/eslint-plugin]: https://github.com/typescript-eslint/typescript-eslint

[@typescript-eslint/func-call-spacing]: https://github.com/typescript-eslint/typescript-eslint/blob/master/packages/eslint-plugin/docs/rules/func-call-spacing.md

[@typescript-eslint/key-spacing]: https://github.com/typescript-eslint/typescript-eslint/blob/master/packages/eslint-plugin/docs/rules/key-spacing.md

[@typescript-eslint/keyword-spacing]: https://github.com/typescript-eslint/typescript-eslint/blob/master/packages/eslint-plugin/docs/rules/keyword-spacing.md

[@typescript-eslint/lines-around-comment]: https://github.com/typescript-eslint/typescript-eslint/blob/master/packages/eslint-plugin/docs/rules/lines-around-comment.md

[@typescript-eslint/no-extra-parens]: https://github.com/typescript-eslint/typescript-eslint/blob/master/packages/eslint-plugin/docs/rules/no-extra-parens.md

[@typescript-eslint/no-extra-semi]: https://github.com/typescript-eslint/typescript-eslint/blob/master/packages/eslint-plugin/docs/rules/no-extra-semi.md

[@typescript-eslint/object-curly-spacing]: https://github.com/typescript-eslint/typescript-eslint/blob/master/packages/eslint-plugin/docs/rules/object-curly-spacing.md

[@typescript-eslint/quotes-special]: https://github.com/prettier/eslint-config-prettier/blob/857257179fe69715362dfa9300762d6e534c0603/README.md#quotes

[@typescript-eslint/quotes]: https://github.com/typescript-eslint/typescript-eslint/blob/master/packages/eslint-plugin/docs/rules/quotes.md

[@typescript-eslint/semi]: https://github.com/typescript-eslint/typescript-eslint/blob/master/packages/eslint-plugin/docs/rules/semi.md

[@typescript-eslint/space-before-blocks]: https://github.com/typescript-eslint/typescript-eslint/blob/master/packages/eslint-plugin/docs/rules/space-before-blocks.md

[@typescript-eslint/space-before-function-paren]: https://github.com/typescript-eslint/typescript-eslint/blob/master/packages/eslint-plugin/docs/rules/space-before-function-paren.md

[@typescript-eslint/space-infix-ops]: https://github.com/typescript-eslint/typescript-eslint/blob/master/packages/eslint-plugin/docs/rules/space-infix-ops.md

[array-bracket-newline]: https://eslint.org/docs/rules/array-bracket-newline

[array-element-newline]: https://eslint.org/docs/rules/array-element-newline

[arrow-body-style]: https://eslint.org/docs/rules/arrow-body-style

[arrow-special]: https://github.com/prettier/eslint-config-prettier/blob/2c842675e55b91aecaef6f997d234ebf2d220ffb/README.md#arrow-body-style-and-prefer-arrow-callback

[curly]: https://eslint.org/docs/rules/curly

[deprecated-8.53.0]: https://eslint.org/blog/2023/10/deprecating-formatting-rules/

[end-of-line]: https://prettier.io/docs/en/options.html#end-of-line

[eslint 4.0.0]: https://eslint.org/blog/2017/06/eslint-v4.0.0-released

[eslint 4.6.0]: https://eslint.org/blog/2017/09/eslint-v4.6.0-released

[ESLINT_USE_FLAT_CONFIG]: https://github.com/prettier/eslint-config-prettier#eslint_use_flat_config-environment-variable

[eslint-plugin-babel]: https://github.com/babel/eslint-plugin-babel

[eslint-plugin-flowtype]: https://github.com/gajus/eslint-plugin-flowtype

[eslint-plugin-prettier]: https://github.com/prettier/eslint-plugin-prettier

[eslint-plugin-react]: https://github.com/yannickcr/eslint-plugin-react

[eslint-plugin-standard]: https://github.com/xjamundx/eslint-plugin-standard

[eslint-plugin-typescript]: https://github.com/bradzacher/eslint-plugin-typescript

[eslint-plugin-unicorn]: https://github.com/sindresorhus/eslint-plugin-unicorn

[eslint-plugin-vue]: https://github.com/vuejs/eslint-plugin-vue

[excluding deprecated rules]: https://github.com/prettier/eslint-config-prettier/tree/9f6b59486ad742dc12ad3be157ddff5f8454ef7a#excluding-deprecated-rules

[flowtype/boolean-style]: https://github.com/gajus/eslint-plugin-flowtype#eslint-plugin-flowtype-rules-boolean-style

[flowtype/object-type-curly-spacing]: https://github.com/gajus/eslint-plugin-flowtype#eslint-plugin-flowtype-rules-object-type-curly-spacing

[flowtype/quotes]: https://github.com/gajus/eslint-plugin-flowtype#eslint-plugin-flowtype-rules-quotes

[function-call-argument-newline]: https://eslint.org/docs/rules/function-call-argument-newline

[function-paren-newline]: https://eslint.org/docs/rules/function-paren-newline

[implicit-arrow-linebreak]: https://eslint.org/docs/rules/implicit-arrow-linebreak

[indent-legacy]: https://eslint.org/docs/rules/indent-legacy

[linebreak-style]: https://eslint.org/docs/rules/linebreak-style

[lines-around-comment-special]: https://github.com/prettier/eslint-config-prettier/blob/5399175c37466747aae9d407021dffec2c169c8b/README.md#lines-around-comment

[lines-around-comment]: https://eslint.org/docs/rules/lines-around-comment

[max-statements-per-line]: https://eslint.org/docs/latest/rules/max-statements-per-line

[no-confusing-arrow-special]: https://github.com/prettier/eslint-config-prettier/blob/08ac5bcc25c9cdc71864b4a1e4191e7d28dd2bc2/README.md#no-confusing-arrow

[no-confusing-arrow]: https://eslint.org/docs/rules/no-confusing-arrow

[no-floating-decimal]: https://eslint.org/docs/rules/no-floating-decimal

[no-tabs-special]: https://github.com/prettier/eslint-config-prettier/blob/dfa6e2b51f11a8001e9e7d38b78f03c7d75175ec/README.md#no-tabs

[no-tabs]: https://eslint.org/docs/rules/no-tabs

[no-unexpected-multiline-special]: https://github.com/prettier/eslint-config-prettier/blob/5399175c37466747aae9d407021dffec2c169c8b/README.md#no-unexpected-multiline

[no-unexpected-multiline]: https://eslint.org/docs/rules/no-unexpected-multiline

[nonblock-statement-body-position]: https://eslint.org/docs/rules/nonblock-statement-body-position

[one-var-declaration-per-line]: https://eslint.org/docs/rules/one-var-declaration-per-line

[plugin:prettier/recommended]: https://github.com/prettier/eslint-plugin-prettier#recommended-configuration

[prefer-arrow-callback]: https://eslint.org/docs/rules/prefer-arrow-callback

[prettier-prettier-config]: https://github.com/prettier/eslint-config-prettier/tree/03c79b9306892d4dbc828ce723813ef015baabc5#arrow-body-style-and-prefer-arrow-callback

[prettier-self-closing]: https://prettier.io/blog/2019/06/06/1.18.0.html#stop-converting-empty-jsx-elements-to-self-closing-elements-6127-by-duailibe

[prettier]: https://github.com/prettier

[quotes-special]: https://github.com/prettier/eslint-config-prettier/blob/8d264cd0a7f06c12e2e05415e0282a4f8f21ebc9/README.md#quotes

[quotes]: https://eslint.org/docs/rules/quotes

[react/jsx-child-element-spacing]: https://github.com/yannickcr/eslint-plugin-react/blob/master/docs/rules/jsx-child-element-spacing.md

[react/jsx-closing-tag-location]: https://github.com/yannickcr/eslint-plugin-react/blob/master/docs/rules/jsx-closing-tag-location.md

[react/jsx-curly-newline]: https://github.com/yannickcr/eslint-plugin-react/blob/master/docs/rules/jsx-curly-newline.md

[react/jsx-newline]: https://github.com/yannickcr/eslint-plugin-react/blob/master/docs/rules/jsx-newline.md

[react/jsx-one-expression-per-line]: https://github.com/yannickcr/eslint-plugin-react/blob/master/docs/rules/jsx-one-expression-per-line.md

[react/jsx-props-no-multi-spaces]: https://github.com/yannickcr/eslint-plugin-react/blob/master/docs/rules/jsx-props-no-multi-spaces.md

[react/self-closing-comp]: https://github.com/yannickcr/eslint-plugin-react/blob/master/docs/rules/self-closing-comp.md

[semi-style]: https://eslint.org/docs/rules/semi-style

[switch-colon-spacing]: https://eslint.org/docs/rules/switch-colon-spacing

[template-tag-spacing]: https://eslint.org/docs/rules/template-tag-spacing

[unicode-bom]: https://eslint.org/docs/rules/unicode-bom

[unicorn/empty-brace-spaces]: https://github.com/sindresorhus/eslint-plugin-unicorn/blob/master/docs/rules/empty-brace-spaces.md

[unicorn/no-nested-ternary]: https://github.com/sindresorhus/eslint-plugin-unicorn/blob/master/docs/rules/no-nested-ternary.md

[unicorn/template-indent-special]: https://github.com/prettier/eslint-config-prettier/blob/4110dff0c5b258be37506ecee9578cd7ff8e4759/README.md#unicorntemplate-indent

[unicorn/template-indent]: https://github.com/sindresorhus/eslint-plugin-unicorn/blob/master/docs/rules/template-indent.md

[vue/array-element-newline]: https://github.com/vuejs/eslint-plugin-vue/blob/master/docs/rules/array-element-newline.md

[vue/arrow-spacing]: https://github.com/vuejs/eslint-plugin-vue/blob/master/docs/rules/arrow-spacing.md

[vue/block-spacing]: https://github.com/vuejs/eslint-plugin-vue/blob/master/docs/rules/block-spacing.md

[vue/brace-style]: https://github.com/vuejs/eslint-plugin-vue/blob/master/docs/rules/brace-style.md

[vue/comma-dangle]: https://github.com/vuejs/eslint-plugin-vue/blob/master/docs/rules/comma-dangle.md

[vue/dot-location]: https://github.com/vuejs/eslint-plugin-vue/blob/master/docs/rules/dot-location.md

[vue/html-self-closing-special]: https://github.com/prettier/eslint-config-prettier/blob/d5e7af986221df5faedc12893d8dc3150a808693/README.md#vuehtml-self-closing

[vue/html-self-closing]: https://github.com/vuejs/eslint-plugin-vue/blob/master/docs/rules/html-self-closing.md

[vue/keyword-spacing]: https://github.com/vuejs/eslint-plugin-vue/blob/master/docs/rules/array-bracket-newline.md

[vue/keyword-spacing]: https://github.com/vuejs/eslint-plugin-vue/blob/master/docs/rules/block-tag-newline.md

[vue/keyword-spacing]: https://github.com/vuejs/eslint-plugin-vue/blob/master/docs/rules/keyword-spacing.md

[vue/max-len]: https://github.com/vuejs/eslint-plugin-vue/blob/master/docs/rules/max-len.md

[vue/multiline-ternary]: https://github.com/vuejs/eslint-plugin-vue/blob/master/docs/rules/multiline-ternary.md

[vue/quote-props]: https://github.com/vuejs/eslint-plugin-vue/blob/master/docs/rules/quote-props.md
renovate bot added a commit to andrei-picus-tink/auto-renovate that referenced this pull request Sep 7, 2025
| datasource | package                | from   | to     |
| ---------- | ---------------------- | ------ | ------ |
| npm        | eslint-config-prettier | 10.1.5 | 10.1.8 |


## [v10.1.8](https://github.com/prettier/eslint-config-prettier/releases/tag/v10.1.8)

### eslint-config-prettier

#### 10.1.5

##### Patch Changes

- [#332](prettier/eslint-config-prettier#332) [`60fef02`](prettier/eslint-config-prettier@60fef02) Thanks [@JounQin](https://github.com/JounQin)! - chore: add `funding` field into `package.json`

#### 10.1.4

##### Patch Changes

- [#328](prettier/eslint-config-prettier#328) [`94b4799`](prettier/eslint-config-prettier@94b4799) Thanks [@silvenon](https://github.com/silvenon)! - fix(cli): do not crash on no rules configured

#### 10.1.3

##### Patch Changes

- [#325](prettier/eslint-config-prettier#325) [`4e95a1d`](prettier/eslint-config-prettier@4e95a1d) Thanks [@pilikan](https://github.com/pilikan)! - fix: this package is `commonjs`, align its types correctly

#### 10.1.2

##### Patch Changes

- [#321](prettier/eslint-config-prettier#321) [`a8768bf`](prettier/eslint-config-prettier@a8768bf) Thanks [@Fdawgs](https://github.com/Fdawgs)! - chore(package): add homepage for some 3rd-party registry - see [#321](prettier/eslint-config-prettier#321) for more details

#### 10.1.1

##### Patch Changes

- [#309](prettier/eslint-config-prettier#309) [`eb56a5e`](prettier/eslint-config-prettier@eb56a5e) Thanks [@JounQin](https://github.com/JounQin)! - fix: separate the `/flat` entry for compatibility

  For flat config users, the previous `"eslint-config-prettier"` entry still works, but `"eslint-config-prettier/flat"` adds a new `name` property for [config-inspector](https://eslint.org/blog/2024/04/eslint-config-inspector/), we just can't add it for the default entry for compatibility.

  See also [#308](prettier/eslint-config-prettier#308)

  ```ts
  // before
  import eslintConfigPrettier from "eslint-config-prettier";

  // after
  import eslintConfigPrettier from "eslint-config-prettier/flat";
  ```

#### 10.1.0

##### Minor Changes

- [#306](prettier/eslint-config-prettier#306) [`56e2e34`](prettier/eslint-config-prettier@56e2e34) Thanks [@JounQin](https://github.com/JounQin)! - feat: migrate to exports field

#### 10.0.3

##### Patch Changes

- [#294](prettier/eslint-config-prettier#294) [`8dbbd6d`](prettier/eslint-config-prettier@8dbbd6d) Thanks [@FloEdelmann](https://github.com/FloEdelmann)! - feat: add name to config

- [#280](prettier/eslint-config-prettier#280) [`cba5737`](prettier/eslint-config-prettier@cba5737) Thanks [@zanminkian](https://github.com/zanminkian)! - feat: add declaration file

#### 10.0.2

##### Patch Changes

- [#299](prettier/eslint-config-prettier#299) [`e750edc`](prettier/eslint-config-prettier@e750edc) Thanks [@Fdawgs](https://github.com/Fdawgs)! - chore(package): explicitly declare js module type

#### 10.0.0

##### Major Changes

- [#272](prettier/eslint-config-prettier#272) [`5be64be`](prettier/eslint-config-prettier@5be64be) Thanks [@abrahamguo](https://github.com/abrahamguo)! - add support for [@Stylistic](https://github.com/stylistic) formatting rules

#### Versions before 10.0.0

##### Version 9.1.0 (2023-12-02)

- Added: [unicorn/template-indent], (as a [special rule][unicorn/template-indent-special]). Thanks to Gürgün Dayıoğlu ([@gurgunday](https://github.com/gurgunday))!
- Changed: All the [formatting rules that were deprecated in ESLint 8.53.0][deprecated-8.53.0] are now excluded if you set the `ESLINT_CONFIG_PRETTIER_NO_DEPRECATED` environment variable.

##### Version 9.0.0 (2023-08-05)

- Added: The CLI helper tool now works with eslint.config.js (flat config). Just like ESLint itself, the CLI tool automatically first tries eslint.config.js and then eslintrc, and you can force which one to use by setting the [ESLINT\_USE\_FLAT\_CONFIG][ESLINT_USE_FLAT_CONFIG] environment variable. Note that the *config* of eslint-config-prettier has always been compatible with eslint.config.js (flat config) – it was just the CLI tool that needed updating. On top of that, the docs have been updated to mention how to use both eslint.config.js (flat config) and eslintrc, and the tests now test both config systems.
- Changed: [unicode-bom] is no longer turned off. Prettier preserves the BOM if you have one, and does not add one if missing. It was wrong of eslint-config-prettier to disable that rule. If you get ESLint errors after upgrading, either add `"unicode-bom": "off"` to your config to disable it again, or run ESLint with `--fix` to fix all files according to the rule (add or remove BOM). Thanks to Nicolas Stepien ([@nstepien](https://github.com/nstepien))!

##### Version 8.10.0 (2023-08-03)

- Added: [max-statements-per-line]. Thanks to [@Zamiell](https://github.com/Zamiell)!

##### Version 8.9.0 (2023-07-27)

- Added: [vue/array-element-newline]. Thanks to [@xcatliu](https://github.com/xcatliu)!

##### Version 8.8.0 (2023-03-20)

- Added: [@typescript-eslint/lines-around-comment]. Thanks to [@ttionya](https://github.com/ttionya)!

##### Version 8.7.0 (2023-03-06)

- Added: [@typescript-eslint/block-spacing]. Thanks to [@ttionya](https://github.com/ttionya)!
- Added: [@typescript-eslint/key-spacing]. Thanks to [@ttionya](https://github.com/ttionya)!

##### Version 8.6.0 (2023-01-02)

- Added: [vue/multiline-ternary]. Thanks to [@xcatliu](https://github.com/xcatliu)!

##### Version 8.5.0 (2022-03-02)

- Added: [@typescript-eslint/space-before-blocks]. Thanks to Masafumi Koba ([@ybiquitous](https://github.com/ybiquitous))!

##### Version 8.4.0 (2022-02-19)

- Added: [vue/quote-props]. Thanks to [@xcatliu](https://github.com/xcatliu)!

##### Version 8.3.0 (2021-04-24)

- Added: Support for [@babel/eslint-plugin]. Thanks to Chip Zhang ([@ChipZhang](https://github.com/ChipZhang)) for the heads-up! ([eslint-plugin-babel] is still supported, too.)

##### Version 8.2.0 (2021-04-13)

- Added: [flowtype/quotes]. Thanks to Martin Zlámal ([@mrtnzlml](https://github.com/mrtnzlml))!

##### Version 8.1.0 (2021-02-24)

- Added: [flowtype/object-type-curly-spacing].
- Added: Dummy files for the configs removed in 8.0.0. The dummy files throw an error that try to guide you how to upgrade.

##### Version 8.0.0 (2021-02-21)

- Changed: All configs have been merged into one!

  To upgrade, change:

  ```json
  {
    "extends": [
      "some-other-config-you-use",
      "prettier",
      "prettier/@typescript-eslint",
      "prettier/babel",
      "prettier/flowtype",
      "prettier/react",
      "prettier/standard",
      "prettier/unicorn",
      "prettier/vue"
    ]
  }
  ```

  Into:

  <!-- prettier-ignore -->

  ```json
  {
    "extends": [
      "some-other-config-you-use",
      "prettier"
    ]
  }
  ```

  The `"prettier"` config now includes not just ESLint core rules, but also rules from all plugins. Much simpler!

  So … what’s the catch? Why haven’t we done this earlier? Turns out it’s just a sad mistake. I ([@lydell](https://github.com/lydell)) was confused when testing, and thought that turning off unknown rules in a config was an error. Thanks to Georgii Dolzhykov ([@thorn0](https://github.com/thorn0)) for pointing this out!

  If you use [eslint-plugin-prettier], all you need is [plugin:prettier/recommended]:

  <!-- prettier-ignore -->

  ```json
  {
    "extends": [
      "some-other-config-you-use",
      "plugin:prettier/recommended"
    ]
  }
  ```

  (The ["prettier/prettier" config][prettier-prettier-config] still exists separately. It’s the odd one out. The main `"prettier"` config does *not* include the rules from it.)

- Changed: The CLI helper tool now only prints warnings for [arrow-body-style] and [prefer-arrow-callback], just like other “special rules.” This means that if you’ve decided to use those rules and [eslint-plugin-prettier] at the same time, you’ll get warnings but exit code zero (success).

##### Version 7.2.0 (2021-01-18)

- Added: [@typescript-eslint/object-curly-spacing].
- Added: [react/jsx-newline].

##### Version 7.1.0 (2020-12-19)

- Added: [unicorn/empty-brace-spaces]. Thanks to fisker Cheung ([@fisker](https://github.com/fisker))!

##### Version 7.0.0 (2020-12-05)

- Changed: At least ESLint 7.0.0 is now required.

- Changed: [arrow-body-style] and [prefer-arrow-callback] are no longer turned off by default. They only need to be turned off if you use [eslint-plugin-prettier]. If you do, add `"prettier/prettier"` to your `"extends"` array to turn them off again.

  ```json
  {
    "extends": ["prettier", "prettier/prettier"],
    "plugins": ["prettier"],
    "rules": {
      "prettier/prettier": "error"
    }
  }
  ```

  Alternatively, update [eslint-plugin-prettier] to version 3.2.0 or later which automatically turns off these two rules in its `"plugin:prettier/recommended"` config.

  The CLI helper tool only warns about these rules if you have the `"prettier/prettier"` *rule* enabled for a file.

- Changed: `no-tabs` is now a validatable rule. If you use it, you should enable `allowIndentationTabs` so that the rule works regardless of your Prettier config:

  ```json
  {
    "rules": {
      "no-tabs": ["error", { "allowIndentationTabs": true }]
    }
  }
  ```

- Changed: The CLI helper tool is now called just `eslint-config-prettier` instead of `eslint-config-prettier-check`. This is so that `npx eslint-config-prettier` always works regardless of whether you have already installed `eslint-config-prettier` or not: If you have, the local installation is used; if you haven’t, `npx` downloads a temporary copy.

- Changed: The CLI helper tool no longer requires you to pipe the output of `eslint --print-config` to it. Instead, it does that automatically for you via ESLint API:s added in ESLint v7.

  Before:

  ```
  npx eslint --print-config index.js | npx eslint-config-prettier-check
  ```

  After:

  ```
  npx eslint-config-prettier index.js
  ```

- Improved: The npm package is now 75% smaller.

##### Version 6.15.0 (2020-10-27)

- Added: [@typescript-eslint/space-infix-ops]. Thanks to Masafumi Koba ([@ybiquitous](https://github.com/ybiquitous))!

##### Version 6.14.0 (2020-10-21)

- Added: New [eslint-plugin-vue] rules: \[vue/array-bracket-newline] and \[vue/block-tag-newline]. Thanks to [@xcatliu](https://github.com/xcatliu)!

##### Version 6.13.0 (2020-10-16)

- Added: New rules in [eslint-plugin-vue] 7.0 (which supports Vue 3.0). Thanks to [@xcatliu](https://github.com/xcatliu)!

##### Version 6.12.0 (2020-09-25)

- Added: [@typescript-eslint/comma-dangle]. Thanks to Masafumi Koba ([@ybiquitous](https://github.com/ybiquitous))!

##### Version 6.11.0 (2020-04-21)

- Added: [@typescript-eslint/keyword-spacing]. Thanks to Hans Bergren ([@hbergren](https://github.com/hbergren))!

##### Version 6.10.1 (2020-03-22)

- Improved: Recommend using `npx` when running the CLI helper tool.
- Updated: Mention that eslint-config-prettier has been tested with Prettier 2.0 and the latest versions of plugins.

##### Version 6.10.0 (2020-01-28)

- Added: [@typescript-eslint/comma-spacing]. Thanks to Masafumi Koba ([@ybiquitous](https://github.com/ybiquitous))!

##### Version 6.9.0 (2019-12-27)

- Added: [vue/max-len]. Thanks to [@xcatliu](https://github.com/xcatliu)!

##### Version 6.8.0 (2019-12-25)

- Added: [@typescript-eslint/no-extra-semi]. Thanks to [@xcatliu](https://github.com/xcatliu)!

##### Version 6.7.0 (2019-11-19)

- Added: [@typescript-eslint/space-before-function-paren]. Thanks to Masafumi Koba ([@ybiquitous](https://github.com/ybiquitous))!

##### Version 6.6.0 (2019-11-17)

- Added: New [eslint-plugin-vue] rules: [vue/dot-location] and [vue/keyword-spacing]. Thanks to [@xcatliu](https://github.com/xcatliu)!

##### Version 6.5.0 (2019-10-26)

- Added: Support for [excluding deprecated rules]. Thanks to Alex Ilyaev ([@alexilyaev](https://github.com/alexilyaev))!

##### Version 6.4.0 (2019-10-05)

- Added: [unicorn/no-nested-ternary]. Thanks to Yang Mingshan ([@yangmingshan](https://github.com/yangmingshan))!

##### Version 6.3.0 (2019-09-10)

- Added: [@typescript-eslint/brace-style]. Thanks to Masafumi Koba ([@ybiquitous](https://github.com/ybiquitous))!

##### Version 6.2.0 (2019-09-03)

- Added: [@typescript-eslint/quotes] (as a [special rule][@typescript-eslint/quotes-special]). Thanks to Masafumi Koba ([@ybiquitous](https://github.com/ybiquitous))!

##### Version 6.1.0 (2019-08-19)

- Added: [function-call-argument-newline] (new in ESLint 6.2.0). Thanks to Masafumi Koba ([@ybiquitous](https://github.com/ybiquitous))!

##### Version 6.0.0 (2019-06-25)

- Changed: The CLI helper tool now considers [no-confusing-arrow] to conflict if you use the default value of its `allowParens` option. The default was changed to `true` in ESLint 6, which conflicts with Prettier.

  If the CLI helper tool gives you errors about this after upgrading, the solution is to change this:

  ```json
  {
    "rules": {
      "no-confusing-arrow": ["error"]
    }
  }
  ```

  Into this:

  ```json
  {
    "rules": {
      "no-confusing-arrow": ["error", { "allowParens": false }]
    }
  }
  ```

  The latter works in both ESLint 6 as well as in ESLint 5 and older.

- Improved: `eslint --print-config` usage instructions. The CLI tool help text as well as the documentation has been updated to suggest commands that work in ESLint 6.0 as well as in ESLint 5 and older. (Instead of `eslint --print-config .`, use `eslint --print-config path/to/main.js`.)

##### Version 5.1.0 (2019-06-25)

- Added: [react/jsx-curly-newline]. Thanks to Masafumi Koba ([@ybiquitous](https://github.com/ybiquitous))!

##### Version 5.0.0 (2019-06-15)

- Removed: [react/self-closing-comp]. This rule was added in v4.1.0 not because it *conflicted* with Prettier but because it was *unnecessary* when using Prettier. However, in v1.18.0 [Prettier stopped converting empty elements to self-closing elements][prettier-self-closing]. So the rule is not unnecessary anymore.

  If you use Prettier v1.17.1 or older you should be able to upgrade eslint-config-prettier to v5.0.0 without having to do anything else.

  If you use Prettier v1.18.0 or newer, you might get lint errors about for example changing `<div></div>` into `<div />`. You have two options:

  - Run `eslint --fix` if you prefer to enforce self-closing elements where possible. This should fix all the errors.
  - Add `"react/self-closing-comp": "off"` to your ESLint config if you use autofix from your editor and you face the same [issue as Prettier did][prettier-self-closing].

- Changed: Node.js 6 is no longer officially supported, but v5.0.0 should still work with it.

##### Version 4.3.0 (2019-05-16)

- Added: New [eslint-plugin-vue] rules: [vue/arrow-spacing], [vue/block-spacing], [vue/brace-style] and [vue/comma-dangle].
- Added: New [@typescript-eslint/eslint-plugin] rules: [@typescript-eslint/func-call-spacing] and [@typescript-eslint/semi].

##### Version 4.2.0 (2019-04-25)

- Added: [@typescript-eslint/no-extra-parens]. Thanks to Keiichiro Amemiya ([@Hoishin](https://github.com/Hoishin)) and Jen Gorfine ([@jgorfine](https://github.com/jgorfine))!

##### Version 4.1.0 (2019-02-26)

- Added: [linebreak-style]. Use Prettier’s [end-of-line] option instead.
- Added: [react/self-closing-comp]. Thanks to Gaurav Gupta ([@gaurav5430](https://github.com/gaurav5430))!

##### Version 4.0.0 (2019-01-26)

- Breaking change: Support for [eslint-plugin-typescript] has been removed and replaced with support for its successor [@typescript-eslint/eslint-plugin]. Thanks to TANIGUCHI Masaya ([@ta2gch](https://github.com/ta2gch)) and everyone else who helped with this!
- Changed: [arrow-body-style] and [prefer-arrow-callback] are now marked as [special rules][arrow-special], since they might cause problems if using [eslint-plugin-prettier] and `--fix`. They are turned off by default, and the CLI helper tool will *warn* about them (but not error if you do enable them). This won’t break your linting checks, but do note that these rules will be disabled unless you explicitly enable them again, and that you might see new warnings when running the CLI helper tool.

##### Version 3.6.0 (2019-01-19)

- Added: Support for [eslint-plugin-babel]. Thanks to Matija Marohnić ([@silvenon](https://github.com/silvenon))!

##### Version 3.5.0 (2019-01-16)

- Fixed: The eslint-plugin-vue change from 3.4.0 has been reverted. That change requires eslint-plugin-vue@5, while many use eslint-plugin-vue@4. In other words, it was an accidental breaking change. Also, after thinking about it some more, it makes sense to have a Prettier-specific list of rules, rather than using the `vue/no-layout-rules` list, since there can be layout rules that don’t conflict with but rather complement Prettier.
- Added: New eslint-plugin-vue rules coming in the next version after 5.1.0.

##### Version 3.4.0 (2019-01-13)

- Added: Support for [eslint-plugin-typescript]. Thanks to Jed Fox ([@j-f1](https://github.com/j-f1))!
- Improved: The eslint-plugin-vue integration is now using the `vue/no-layout-rules` config behind the scenes, so it should automatically stay up-to-date when new eslint-plugin-vue versions are released. Thanks to Michał Sajnóg ([@michalsnik](https://github.com/michalsnik))!

##### Version 3.3.0 (2018-11-11)

- Added: The [vue/html-self-closing] rule (as a [special rule][vue/html-self-closing-special]). Thanks to Yamagishi Kazutoshi ([@ykzts](https://github.com/ykzts))!

##### Version 3.2.0 (2018-11-10)

- Added: Support for [eslint-plugin-vue].
- Fixed: The CLI helper tool should now work in Node.js 6 with npm 3 again. Thanks to Grant Snodgrass ([@meeber](https://github.com/meeber))!
- Improved: Updated documentation.

##### Version 3.1.0 (2018-09-22)

- Added: Support for [eslint-plugin-unicorn]. Thanks to John Mars ([@j0hnm4r5](https://github.com/j0hnm4r5))!
- Changed: The [quotes] rule is now allowed to be used to forbid unnecessary backticks. This means that the CLI helper tool no longer can automatically validate it, so you’ll need to refer the [quotes special rule documentation][quotes-special]. Thanks to Nick Petruzzelli ([@npetruzzelli](https://github.com/npetruzzelli))!

##### Version 3.0.1 (2018-08-13)

- Improved: `eslint --print-config` usage instructions.

##### Version 3.0.0 (2018-08-13)

- Breaking change: Dropped Node.js 4 support.

##### Version 2.10.0 (2018-08-13)

- Added: [flowtype/boolean-style]. Thanks to Mayank Agarwal ([@Mayank1791989](https://github.com/Mayank1791989))!
- Added: [react/jsx-child-element-spacing]
- Added: [react/jsx-props-no-multi-spaces]

##### Version 2.9.0 (2017-11-26)

- Added: The [implicit-arrow-linebreak] rule.

##### Version 2.8.0 (2017-11-19)

- Added: The [react/jsx-one-expression-per-line] rule.

##### Version 2.7.0 (2017-11-01)

- Added: The [lines-around-comment] rule (as a [special rule][lines-around-comment-special]). Thanks to Maurice de Beijer ([@mauricedb](https://github.com/mauricedb))!
- Added: The [no-unexpected-multiline] rule (as a [special rule][no-unexpected-multiline-special]). Thanks to Suhas Karanth ([@sudo-suhas](https://github.com/sudo-suhas))!

##### Version 2.6.0 (2017-09-23)

- Added: The [no-floating-decimal] rule.

##### Version 2.5.0 (2017-09-16)

- Added: Support for [eslint-plugin-standard]. Thanks to Christian Pekeler ([@pekeler](https://github.com/pekeler))!

##### Version 2.4.0 (2017-09-02)

- Added: The [function-paren-newline] rule (new in [ESLint 4.6.0]). Thanks to Pierre Vanduynslager ([@vanduynslagerp](https://github.com/vanduynslagerp))!

##### Version 2.3.0 (2017-06-30)

- Added: The (deprecated) [indent-legacy] rule. Thanks to M. Ian Graham ([@miangraham](https://github.com/miangraham))!

##### Version 2.2.0 (2017-06-17)

- Added: New rules from [ESLint 4.0.0]:
  - [array-element-newline]
  - [array-bracket-newline]
  - [semi-style]
  - [switch-colon-spacing]
- Added: [react/jsx-closing-tag-location]

##### Version 2.1.1 (2017-05-20)

- No code changes. Just updates to the readme.

##### Version 2.1.0 (2017-05-13)

- Added: The [no-tabs] rule (as a [special rule][no-tabs-special]). Thanks to Alex Meah ([@AlexMeah](https://github.com/AlexMeah))!

##### Version 2.0.0 (2017-05-07)

- Changed/Improved: The CLI helper tool is now more helpful.

  - The options of special rules are now validated if possible. If a special rule is enabled with non-conflicting options, the CLI no longer warns about it.
  - If only special rules that cannot be automatically checked are found, the CLI no longer exists with a non-zero exit code. Instead, it only warns about the rules.

- Changed: The [no-confusing-arrow] is now a special rule again, since it might conflict with recent Prettier versions.

- Removed: The `react/wrap-multilines` rule (which has been deprecated for a while), since it was removed in eslint-plugin-react@7.

##### Version 1.7.0 (2017-04-19)

- Changed: The [no-confusing-arrow] is no longer a special rule, but simply turned off, since recent Prettier versions make it redundant.
- Improved: The CLI helper tool now has a more helpful message for special rules, and exits with a different status code if only special rules were found. The exit codes are now documented as well.

##### Version 1.6.0 (2017-04-05)

- Added: The [curly] rule. Thanks to Martin Rädlinger ([@formatlos](https://github.com/formatlos))!

##### Version 1.5.0 (2017-03-04)

- Added: The [nonblock-statement-body-position] rule.

##### Version 1.4.1 (2017-02-28)

- Improved: eslint-config-prettier is now part of the [prettier] organization! This version updates all URLs to point to the new home of the project.

##### Version 1.4.0 (2017-02-26)

- Added: The [no-confusing-arrow] rule (as a [special rule][no-confusing-arrow-special]). Thanks to Dominik Ferber ([@dferber90](https://github.com/dferber90))!
- Added: Deprecated or removed rules that might conflict with prettier. Thanks to Dominik Ferber ([@dferber90](https://github.com/dferber90))!

##### Version 1.3.0 (2017-02-21)

- Added: The [template-tag-spacing] rule. Thanks to Thibault Derousseaux ([@tibdex](https://github.com/tibdex))!

##### Version 1.2.0 (2017-02-14)

- Added: The [one-var-declaration-per-line] rule. Thanks to Ruben Oostinga ([@0xR](https://github.com/0xR))!

##### Version 1.1.1 (2017-02-12)

- Minor documentation tweak: Changed "Exceptions" into "Special rules".

##### Version 1.1.0 (2017-02-10)

- Fixed: The [eslint-plugin-react] exclusion rules now actually work.
- Fixed: The CLI helper tool now works in Node.js 4. Thanks to Nathan Friedly ([@nfriedly](https://github.com/nfriedly))!
- Added: Support for [eslint-plugin-flowtype].
- Improved: Minor things for the CLI helper tool.
- Improved: There are now tests for everything.

##### Version 1.0.3 (2017-02-03)

- Fixed: `"extends": "prettier/react"` now actually works.

##### Version 1.0.2 (2017-01-30)

- Improved: CLI helper tool instructions.

##### Version 1.0.1 (2017-01-29)

- No difference from 1.0.0. Just an `npm publish` mistake.

##### Version 1.0.0 (2017-01-29)

- Initial release.

[@babel/eslint-plugin]: https://github.com/babel/babel/tree/main/eslint/babel-eslint-plugin

[@typescript-eslint/block-spacing]: https://github.com/typescript-eslint/typescript-eslint/blob/master/packages/eslint-plugin/docs/rules/block-spacing.md

[@typescript-eslint/brace-style]: https://github.com/typescript-eslint/typescript-eslint/blob/master/packages/eslint-plugin/docs/rules/brace-style.md

[@typescript-eslint/comma-dangle]: https://github.com/typescript-eslint/typescript-eslint/blob/master/packages/eslint-plugin/docs/rules/comma-dangle.md

[@typescript-eslint/comma-spacing]: https://github.com/typescript-eslint/typescript-eslint/blob/master/packages/eslint-plugin/docs/rules/comma-spacing.md

[@typescript-eslint/eslint-plugin]: https://github.com/typescript-eslint/typescript-eslint

[@typescript-eslint/func-call-spacing]: https://github.com/typescript-eslint/typescript-eslint/blob/master/packages/eslint-plugin/docs/rules/func-call-spacing.md

[@typescript-eslint/key-spacing]: https://github.com/typescript-eslint/typescript-eslint/blob/master/packages/eslint-plugin/docs/rules/key-spacing.md

[@typescript-eslint/keyword-spacing]: https://github.com/typescript-eslint/typescript-eslint/blob/master/packages/eslint-plugin/docs/rules/keyword-spacing.md

[@typescript-eslint/lines-around-comment]: https://github.com/typescript-eslint/typescript-eslint/blob/master/packages/eslint-plugin/docs/rules/lines-around-comment.md

[@typescript-eslint/no-extra-parens]: https://github.com/typescript-eslint/typescript-eslint/blob/master/packages/eslint-plugin/docs/rules/no-extra-parens.md

[@typescript-eslint/no-extra-semi]: https://github.com/typescript-eslint/typescript-eslint/blob/master/packages/eslint-plugin/docs/rules/no-extra-semi.md

[@typescript-eslint/object-curly-spacing]: https://github.com/typescript-eslint/typescript-eslint/blob/master/packages/eslint-plugin/docs/rules/object-curly-spacing.md

[@typescript-eslint/quotes-special]: https://github.com/prettier/eslint-config-prettier/blob/857257179fe69715362dfa9300762d6e534c0603/README.md#quotes

[@typescript-eslint/quotes]: https://github.com/typescript-eslint/typescript-eslint/blob/master/packages/eslint-plugin/docs/rules/quotes.md

[@typescript-eslint/semi]: https://github.com/typescript-eslint/typescript-eslint/blob/master/packages/eslint-plugin/docs/rules/semi.md

[@typescript-eslint/space-before-blocks]: https://github.com/typescript-eslint/typescript-eslint/blob/master/packages/eslint-plugin/docs/rules/space-before-blocks.md

[@typescript-eslint/space-before-function-paren]: https://github.com/typescript-eslint/typescript-eslint/blob/master/packages/eslint-plugin/docs/rules/space-before-function-paren.md

[@typescript-eslint/space-infix-ops]: https://github.com/typescript-eslint/typescript-eslint/blob/master/packages/eslint-plugin/docs/rules/space-infix-ops.md

[array-bracket-newline]: https://eslint.org/docs/rules/array-bracket-newline

[array-element-newline]: https://eslint.org/docs/rules/array-element-newline

[arrow-body-style]: https://eslint.org/docs/rules/arrow-body-style

[arrow-special]: https://github.com/prettier/eslint-config-prettier/blob/2c842675e55b91aecaef6f997d234ebf2d220ffb/README.md#arrow-body-style-and-prefer-arrow-callback

[curly]: https://eslint.org/docs/rules/curly

[deprecated-8.53.0]: https://eslint.org/blog/2023/10/deprecating-formatting-rules/

[end-of-line]: https://prettier.io/docs/en/options.html#end-of-line

[eslint 4.0.0]: https://eslint.org/blog/2017/06/eslint-v4.0.0-released

[eslint 4.6.0]: https://eslint.org/blog/2017/09/eslint-v4.6.0-released

[ESLINT_USE_FLAT_CONFIG]: https://github.com/prettier/eslint-config-prettier#eslint_use_flat_config-environment-variable

[eslint-plugin-babel]: https://github.com/babel/eslint-plugin-babel

[eslint-plugin-flowtype]: https://github.com/gajus/eslint-plugin-flowtype

[eslint-plugin-prettier]: https://github.com/prettier/eslint-plugin-prettier

[eslint-plugin-react]: https://github.com/yannickcr/eslint-plugin-react

[eslint-plugin-standard]: https://github.com/xjamundx/eslint-plugin-standard

[eslint-plugin-typescript]: https://github.com/bradzacher/eslint-plugin-typescript

[eslint-plugin-unicorn]: https://github.com/sindresorhus/eslint-plugin-unicorn

[eslint-plugin-vue]: https://github.com/vuejs/eslint-plugin-vue

[excluding deprecated rules]: https://github.com/prettier/eslint-config-prettier/tree/9f6b59486ad742dc12ad3be157ddff5f8454ef7a#excluding-deprecated-rules

[flowtype/boolean-style]: https://github.com/gajus/eslint-plugin-flowtype#eslint-plugin-flowtype-rules-boolean-style

[flowtype/object-type-curly-spacing]: https://github.com/gajus/eslint-plugin-flowtype#eslint-plugin-flowtype-rules-object-type-curly-spacing

[flowtype/quotes]: https://github.com/gajus/eslint-plugin-flowtype#eslint-plugin-flowtype-rules-quotes

[function-call-argument-newline]: https://eslint.org/docs/rules/function-call-argument-newline

[function-paren-newline]: https://eslint.org/docs/rules/function-paren-newline

[implicit-arrow-linebreak]: https://eslint.org/docs/rules/implicit-arrow-linebreak

[indent-legacy]: https://eslint.org/docs/rules/indent-legacy

[linebreak-style]: https://eslint.org/docs/rules/linebreak-style

[lines-around-comment-special]: https://github.com/prettier/eslint-config-prettier/blob/5399175c37466747aae9d407021dffec2c169c8b/README.md#lines-around-comment

[lines-around-comment]: https://eslint.org/docs/rules/lines-around-comment

[max-statements-per-line]: https://eslint.org/docs/latest/rules/max-statements-per-line

[no-confusing-arrow-special]: https://github.com/prettier/eslint-config-prettier/blob/08ac5bcc25c9cdc71864b4a1e4191e7d28dd2bc2/README.md#no-confusing-arrow

[no-confusing-arrow]: https://eslint.org/docs/rules/no-confusing-arrow

[no-floating-decimal]: https://eslint.org/docs/rules/no-floating-decimal

[no-tabs-special]: https://github.com/prettier/eslint-config-prettier/blob/dfa6e2b51f11a8001e9e7d38b78f03c7d75175ec/README.md#no-tabs

[no-tabs]: https://eslint.org/docs/rules/no-tabs

[no-unexpected-multiline-special]: https://github.com/prettier/eslint-config-prettier/blob/5399175c37466747aae9d407021dffec2c169c8b/README.md#no-unexpected-multiline

[no-unexpected-multiline]: https://eslint.org/docs/rules/no-unexpected-multiline

[nonblock-statement-body-position]: https://eslint.org/docs/rules/nonblock-statement-body-position

[one-var-declaration-per-line]: https://eslint.org/docs/rules/one-var-declaration-per-line

[plugin:prettier/recommended]: https://github.com/prettier/eslint-plugin-prettier#recommended-configuration

[prefer-arrow-callback]: https://eslint.org/docs/rules/prefer-arrow-callback

[prettier-prettier-config]: https://github.com/prettier/eslint-config-prettier/tree/03c79b9306892d4dbc828ce723813ef015baabc5#arrow-body-style-and-prefer-arrow-callback

[prettier-self-closing]: https://prettier.io/blog/2019/06/06/1.18.0.html#stop-converting-empty-jsx-elements-to-self-closing-elements-6127-by-duailibe

[prettier]: https://github.com/prettier

[quotes-special]: https://github.com/prettier/eslint-config-prettier/blob/8d264cd0a7f06c12e2e05415e0282a4f8f21ebc9/README.md#quotes

[quotes]: https://eslint.org/docs/rules/quotes

[react/jsx-child-element-spacing]: https://github.com/yannickcr/eslint-plugin-react/blob/master/docs/rules/jsx-child-element-spacing.md

[react/jsx-closing-tag-location]: https://github.com/yannickcr/eslint-plugin-react/blob/master/docs/rules/jsx-closing-tag-location.md

[react/jsx-curly-newline]: https://github.com/yannickcr/eslint-plugin-react/blob/master/docs/rules/jsx-curly-newline.md

[react/jsx-newline]: https://github.com/yannickcr/eslint-plugin-react/blob/master/docs/rules/jsx-newline.md

[react/jsx-one-expression-per-line]: https://github.com/yannickcr/eslint-plugin-react/blob/master/docs/rules/jsx-one-expression-per-line.md

[react/jsx-props-no-multi-spaces]: https://github.com/yannickcr/eslint-plugin-react/blob/master/docs/rules/jsx-props-no-multi-spaces.md

[react/self-closing-comp]: https://github.com/yannickcr/eslint-plugin-react/blob/master/docs/rules/self-closing-comp.md

[semi-style]: https://eslint.org/docs/rules/semi-style

[switch-colon-spacing]: https://eslint.org/docs/rules/switch-colon-spacing

[template-tag-spacing]: https://eslint.org/docs/rules/template-tag-spacing

[unicode-bom]: https://eslint.org/docs/rules/unicode-bom

[unicorn/empty-brace-spaces]: https://github.com/sindresorhus/eslint-plugin-unicorn/blob/master/docs/rules/empty-brace-spaces.md

[unicorn/no-nested-ternary]: https://github.com/sindresorhus/eslint-plugin-unicorn/blob/master/docs/rules/no-nested-ternary.md

[unicorn/template-indent-special]: https://github.com/prettier/eslint-config-prettier/blob/4110dff0c5b258be37506ecee9578cd7ff8e4759/README.md#unicorntemplate-indent

[unicorn/template-indent]: https://github.com/sindresorhus/eslint-plugin-unicorn/blob/master/docs/rules/template-indent.md

[vue/array-element-newline]: https://github.com/vuejs/eslint-plugin-vue/blob/master/docs/rules/array-element-newline.md

[vue/arrow-spacing]: https://github.com/vuejs/eslint-plugin-vue/blob/master/docs/rules/arrow-spacing.md

[vue/block-spacing]: https://github.com/vuejs/eslint-plugin-vue/blob/master/docs/rules/block-spacing.md

[vue/brace-style]: https://github.com/vuejs/eslint-plugin-vue/blob/master/docs/rules/brace-style.md

[vue/comma-dangle]: https://github.com/vuejs/eslint-plugin-vue/blob/master/docs/rules/comma-dangle.md

[vue/dot-location]: https://github.com/vuejs/eslint-plugin-vue/blob/master/docs/rules/dot-location.md

[vue/html-self-closing-special]: https://github.com/prettier/eslint-config-prettier/blob/d5e7af986221df5faedc12893d8dc3150a808693/README.md#vuehtml-self-closing

[vue/html-self-closing]: https://github.com/vuejs/eslint-plugin-vue/blob/master/docs/rules/html-self-closing.md

[vue/keyword-spacing]: https://github.com/vuejs/eslint-plugin-vue/blob/master/docs/rules/array-bracket-newline.md

[vue/keyword-spacing]: https://github.com/vuejs/eslint-plugin-vue/blob/master/docs/rules/block-tag-newline.md

[vue/keyword-spacing]: https://github.com/vuejs/eslint-plugin-vue/blob/master/docs/rules/keyword-spacing.md

[vue/max-len]: https://github.com/vuejs/eslint-plugin-vue/blob/master/docs/rules/max-len.md

[vue/multiline-ternary]: https://github.com/vuejs/eslint-plugin-vue/blob/master/docs/rules/multiline-ternary.md

[vue/quote-props]: https://github.com/vuejs/eslint-plugin-vue/blob/master/docs/rules/quote-props.md
renovate bot added a commit to andrei-picus-tink/auto-renovate that referenced this pull request Sep 8, 2025
| datasource | package                | from   | to     |
| ---------- | ---------------------- | ------ | ------ |
| npm        | eslint-config-prettier | 10.1.5 | 10.1.8 |


## [v10.1.8](https://github.com/prettier/eslint-config-prettier/releases/tag/v10.1.8)

### eslint-config-prettier

#### 10.1.5

##### Patch Changes

- [#332](prettier/eslint-config-prettier#332) [`60fef02`](prettier/eslint-config-prettier@60fef02) Thanks [@JounQin](https://github.com/JounQin)! - chore: add `funding` field into `package.json`

#### 10.1.4

##### Patch Changes

- [#328](prettier/eslint-config-prettier#328) [`94b4799`](prettier/eslint-config-prettier@94b4799) Thanks [@silvenon](https://github.com/silvenon)! - fix(cli): do not crash on no rules configured

#### 10.1.3

##### Patch Changes

- [#325](prettier/eslint-config-prettier#325) [`4e95a1d`](prettier/eslint-config-prettier@4e95a1d) Thanks [@pilikan](https://github.com/pilikan)! - fix: this package is `commonjs`, align its types correctly

#### 10.1.2

##### Patch Changes

- [#321](prettier/eslint-config-prettier#321) [`a8768bf`](prettier/eslint-config-prettier@a8768bf) Thanks [@Fdawgs](https://github.com/Fdawgs)! - chore(package): add homepage for some 3rd-party registry - see [#321](prettier/eslint-config-prettier#321) for more details

#### 10.1.1

##### Patch Changes

- [#309](prettier/eslint-config-prettier#309) [`eb56a5e`](prettier/eslint-config-prettier@eb56a5e) Thanks [@JounQin](https://github.com/JounQin)! - fix: separate the `/flat` entry for compatibility

  For flat config users, the previous `"eslint-config-prettier"` entry still works, but `"eslint-config-prettier/flat"` adds a new `name` property for [config-inspector](https://eslint.org/blog/2024/04/eslint-config-inspector/), we just can't add it for the default entry for compatibility.

  See also [#308](prettier/eslint-config-prettier#308)

  ```ts
  // before
  import eslintConfigPrettier from "eslint-config-prettier";

  // after
  import eslintConfigPrettier from "eslint-config-prettier/flat";
  ```

#### 10.1.0

##### Minor Changes

- [#306](prettier/eslint-config-prettier#306) [`56e2e34`](prettier/eslint-config-prettier@56e2e34) Thanks [@JounQin](https://github.com/JounQin)! - feat: migrate to exports field

#### 10.0.3

##### Patch Changes

- [#294](prettier/eslint-config-prettier#294) [`8dbbd6d`](prettier/eslint-config-prettier@8dbbd6d) Thanks [@FloEdelmann](https://github.com/FloEdelmann)! - feat: add name to config

- [#280](prettier/eslint-config-prettier#280) [`cba5737`](prettier/eslint-config-prettier@cba5737) Thanks [@zanminkian](https://github.com/zanminkian)! - feat: add declaration file

#### 10.0.2

##### Patch Changes

- [#299](prettier/eslint-config-prettier#299) [`e750edc`](prettier/eslint-config-prettier@e750edc) Thanks [@Fdawgs](https://github.com/Fdawgs)! - chore(package): explicitly declare js module type

#### 10.0.0

##### Major Changes

- [#272](prettier/eslint-config-prettier#272) [`5be64be`](prettier/eslint-config-prettier@5be64be) Thanks [@abrahamguo](https://github.com/abrahamguo)! - add support for [@Stylistic](https://github.com/stylistic) formatting rules

#### Versions before 10.0.0

##### Version 9.1.0 (2023-12-02)

- Added: [unicorn/template-indent], (as a [special rule][unicorn/template-indent-special]). Thanks to Gürgün Dayıoğlu ([@gurgunday](https://github.com/gurgunday))!
- Changed: All the [formatting rules that were deprecated in ESLint 8.53.0][deprecated-8.53.0] are now excluded if you set the `ESLINT_CONFIG_PRETTIER_NO_DEPRECATED` environment variable.

##### Version 9.0.0 (2023-08-05)

- Added: The CLI helper tool now works with eslint.config.js (flat config). Just like ESLint itself, the CLI tool automatically first tries eslint.config.js and then eslintrc, and you can force which one to use by setting the [ESLINT\_USE\_FLAT\_CONFIG][ESLINT_USE_FLAT_CONFIG] environment variable. Note that the *config* of eslint-config-prettier has always been compatible with eslint.config.js (flat config) – it was just the CLI tool that needed updating. On top of that, the docs have been updated to mention how to use both eslint.config.js (flat config) and eslintrc, and the tests now test both config systems.
- Changed: [unicode-bom] is no longer turned off. Prettier preserves the BOM if you have one, and does not add one if missing. It was wrong of eslint-config-prettier to disable that rule. If you get ESLint errors after upgrading, either add `"unicode-bom": "off"` to your config to disable it again, or run ESLint with `--fix` to fix all files according to the rule (add or remove BOM). Thanks to Nicolas Stepien ([@nstepien](https://github.com/nstepien))!

##### Version 8.10.0 (2023-08-03)

- Added: [max-statements-per-line]. Thanks to [@Zamiell](https://github.com/Zamiell)!

##### Version 8.9.0 (2023-07-27)

- Added: [vue/array-element-newline]. Thanks to [@xcatliu](https://github.com/xcatliu)!

##### Version 8.8.0 (2023-03-20)

- Added: [@typescript-eslint/lines-around-comment]. Thanks to [@ttionya](https://github.com/ttionya)!

##### Version 8.7.0 (2023-03-06)

- Added: [@typescript-eslint/block-spacing]. Thanks to [@ttionya](https://github.com/ttionya)!
- Added: [@typescript-eslint/key-spacing]. Thanks to [@ttionya](https://github.com/ttionya)!

##### Version 8.6.0 (2023-01-02)

- Added: [vue/multiline-ternary]. Thanks to [@xcatliu](https://github.com/xcatliu)!

##### Version 8.5.0 (2022-03-02)

- Added: [@typescript-eslint/space-before-blocks]. Thanks to Masafumi Koba ([@ybiquitous](https://github.com/ybiquitous))!

##### Version 8.4.0 (2022-02-19)

- Added: [vue/quote-props]. Thanks to [@xcatliu](https://github.com/xcatliu)!

##### Version 8.3.0 (2021-04-24)

- Added: Support for [@babel/eslint-plugin]. Thanks to Chip Zhang ([@ChipZhang](https://github.com/ChipZhang)) for the heads-up! ([eslint-plugin-babel] is still supported, too.)

##### Version 8.2.0 (2021-04-13)

- Added: [flowtype/quotes]. Thanks to Martin Zlámal ([@mrtnzlml](https://github.com/mrtnzlml))!

##### Version 8.1.0 (2021-02-24)

- Added: [flowtype/object-type-curly-spacing].
- Added: Dummy files for the configs removed in 8.0.0. The dummy files throw an error that try to guide you how to upgrade.

##### Version 8.0.0 (2021-02-21)

- Changed: All configs have been merged into one!

  To upgrade, change:

  ```json
  {
    "extends": [
      "some-other-config-you-use",
      "prettier",
      "prettier/@typescript-eslint",
      "prettier/babel",
      "prettier/flowtype",
      "prettier/react",
      "prettier/standard",
      "prettier/unicorn",
      "prettier/vue"
    ]
  }
  ```

  Into:

  <!-- prettier-ignore -->

  ```json
  {
    "extends": [
      "some-other-config-you-use",
      "prettier"
    ]
  }
  ```

  The `"prettier"` config now includes not just ESLint core rules, but also rules from all plugins. Much simpler!

  So … what’s the catch? Why haven’t we done this earlier? Turns out it’s just a sad mistake. I ([@lydell](https://github.com/lydell)) was confused when testing, and thought that turning off unknown rules in a config was an error. Thanks to Georgii Dolzhykov ([@thorn0](https://github.com/thorn0)) for pointing this out!

  If you use [eslint-plugin-prettier], all you need is [plugin:prettier/recommended]:

  <!-- prettier-ignore -->

  ```json
  {
    "extends": [
      "some-other-config-you-use",
      "plugin:prettier/recommended"
    ]
  }
  ```

  (The ["prettier/prettier" config][prettier-prettier-config] still exists separately. It’s the odd one out. The main `"prettier"` config does *not* include the rules from it.)

- Changed: The CLI helper tool now only prints warnings for [arrow-body-style] and [prefer-arrow-callback], just like other “special rules.” This means that if you’ve decided to use those rules and [eslint-plugin-prettier] at the same time, you’ll get warnings but exit code zero (success).

##### Version 7.2.0 (2021-01-18)

- Added: [@typescript-eslint/object-curly-spacing].
- Added: [react/jsx-newline].

##### Version 7.1.0 (2020-12-19)

- Added: [unicorn/empty-brace-spaces]. Thanks to fisker Cheung ([@fisker](https://github.com/fisker))!

##### Version 7.0.0 (2020-12-05)

- Changed: At least ESLint 7.0.0 is now required.

- Changed: [arrow-body-style] and [prefer-arrow-callback] are no longer turned off by default. They only need to be turned off if you use [eslint-plugin-prettier]. If you do, add `"prettier/prettier"` to your `"extends"` array to turn them off again.

  ```json
  {
    "extends": ["prettier", "prettier/prettier"],
    "plugins": ["prettier"],
    "rules": {
      "prettier/prettier": "error"
    }
  }
  ```

  Alternatively, update [eslint-plugin-prettier] to version 3.2.0 or later which automatically turns off these two rules in its `"plugin:prettier/recommended"` config.

  The CLI helper tool only warns about these rules if you have the `"prettier/prettier"` *rule* enabled for a file.

- Changed: `no-tabs` is now a validatable rule. If you use it, you should enable `allowIndentationTabs` so that the rule works regardless of your Prettier config:

  ```json
  {
    "rules": {
      "no-tabs": ["error", { "allowIndentationTabs": true }]
    }
  }
  ```

- Changed: The CLI helper tool is now called just `eslint-config-prettier` instead of `eslint-config-prettier-check`. This is so that `npx eslint-config-prettier` always works regardless of whether you have already installed `eslint-config-prettier` or not: If you have, the local installation is used; if you haven’t, `npx` downloads a temporary copy.

- Changed: The CLI helper tool no longer requires you to pipe the output of `eslint --print-config` to it. Instead, it does that automatically for you via ESLint API:s added in ESLint v7.

  Before:

  ```
  npx eslint --print-config index.js | npx eslint-config-prettier-check
  ```

  After:

  ```
  npx eslint-config-prettier index.js
  ```

- Improved: The npm package is now 75% smaller.

##### Version 6.15.0 (2020-10-27)

- Added: [@typescript-eslint/space-infix-ops]. Thanks to Masafumi Koba ([@ybiquitous](https://github.com/ybiquitous))!

##### Version 6.14.0 (2020-10-21)

- Added: New [eslint-plugin-vue] rules: \[vue/array-bracket-newline] and \[vue/block-tag-newline]. Thanks to [@xcatliu](https://github.com/xcatliu)!

##### Version 6.13.0 (2020-10-16)

- Added: New rules in [eslint-plugin-vue] 7.0 (which supports Vue 3.0). Thanks to [@xcatliu](https://github.com/xcatliu)!

##### Version 6.12.0 (2020-09-25)

- Added: [@typescript-eslint/comma-dangle]. Thanks to Masafumi Koba ([@ybiquitous](https://github.com/ybiquitous))!

##### Version 6.11.0 (2020-04-21)

- Added: [@typescript-eslint/keyword-spacing]. Thanks to Hans Bergren ([@hbergren](https://github.com/hbergren))!

##### Version 6.10.1 (2020-03-22)

- Improved: Recommend using `npx` when running the CLI helper tool.
- Updated: Mention that eslint-config-prettier has been tested with Prettier 2.0 and the latest versions of plugins.

##### Version 6.10.0 (2020-01-28)

- Added: [@typescript-eslint/comma-spacing]. Thanks to Masafumi Koba ([@ybiquitous](https://github.com/ybiquitous))!

##### Version 6.9.0 (2019-12-27)

- Added: [vue/max-len]. Thanks to [@xcatliu](https://github.com/xcatliu)!

##### Version 6.8.0 (2019-12-25)

- Added: [@typescript-eslint/no-extra-semi]. Thanks to [@xcatliu](https://github.com/xcatliu)!

##### Version 6.7.0 (2019-11-19)

- Added: [@typescript-eslint/space-before-function-paren]. Thanks to Masafumi Koba ([@ybiquitous](https://github.com/ybiquitous))!

##### Version 6.6.0 (2019-11-17)

- Added: New [eslint-plugin-vue] rules: [vue/dot-location] and [vue/keyword-spacing]. Thanks to [@xcatliu](https://github.com/xcatliu)!

##### Version 6.5.0 (2019-10-26)

- Added: Support for [excluding deprecated rules]. Thanks to Alex Ilyaev ([@alexilyaev](https://github.com/alexilyaev))!

##### Version 6.4.0 (2019-10-05)

- Added: [unicorn/no-nested-ternary]. Thanks to Yang Mingshan ([@yangmingshan](https://github.com/yangmingshan))!

##### Version 6.3.0 (2019-09-10)

- Added: [@typescript-eslint/brace-style]. Thanks to Masafumi Koba ([@ybiquitous](https://github.com/ybiquitous))!

##### Version 6.2.0 (2019-09-03)

- Added: [@typescript-eslint/quotes] (as a [special rule][@typescript-eslint/quotes-special]). Thanks to Masafumi Koba ([@ybiquitous](https://github.com/ybiquitous))!

##### Version 6.1.0 (2019-08-19)

- Added: [function-call-argument-newline] (new in ESLint 6.2.0). Thanks to Masafumi Koba ([@ybiquitous](https://github.com/ybiquitous))!

##### Version 6.0.0 (2019-06-25)

- Changed: The CLI helper tool now considers [no-confusing-arrow] to conflict if you use the default value of its `allowParens` option. The default was changed to `true` in ESLint 6, which conflicts with Prettier.

  If the CLI helper tool gives you errors about this after upgrading, the solution is to change this:

  ```json
  {
    "rules": {
      "no-confusing-arrow": ["error"]
    }
  }
  ```

  Into this:

  ```json
  {
    "rules": {
      "no-confusing-arrow": ["error", { "allowParens": false }]
    }
  }
  ```

  The latter works in both ESLint 6 as well as in ESLint 5 and older.

- Improved: `eslint --print-config` usage instructions. The CLI tool help text as well as the documentation has been updated to suggest commands that work in ESLint 6.0 as well as in ESLint 5 and older. (Instead of `eslint --print-config .`, use `eslint --print-config path/to/main.js`.)

##### Version 5.1.0 (2019-06-25)

- Added: [react/jsx-curly-newline]. Thanks to Masafumi Koba ([@ybiquitous](https://github.com/ybiquitous))!

##### Version 5.0.0 (2019-06-15)

- Removed: [react/self-closing-comp]. This rule was added in v4.1.0 not because it *conflicted* with Prettier but because it was *unnecessary* when using Prettier. However, in v1.18.0 [Prettier stopped converting empty elements to self-closing elements][prettier-self-closing]. So the rule is not unnecessary anymore.

  If you use Prettier v1.17.1 or older you should be able to upgrade eslint-config-prettier to v5.0.0 without having to do anything else.

  If you use Prettier v1.18.0 or newer, you might get lint errors about for example changing `<div></div>` into `<div />`. You have two options:

  - Run `eslint --fix` if you prefer to enforce self-closing elements where possible. This should fix all the errors.
  - Add `"react/self-closing-comp": "off"` to your ESLint config if you use autofix from your editor and you face the same [issue as Prettier did][prettier-self-closing].

- Changed: Node.js 6 is no longer officially supported, but v5.0.0 should still work with it.

##### Version 4.3.0 (2019-05-16)

- Added: New [eslint-plugin-vue] rules: [vue/arrow-spacing], [vue/block-spacing], [vue/brace-style] and [vue/comma-dangle].
- Added: New [@typescript-eslint/eslint-plugin] rules: [@typescript-eslint/func-call-spacing] and [@typescript-eslint/semi].

##### Version 4.2.0 (2019-04-25)

- Added: [@typescript-eslint/no-extra-parens]. Thanks to Keiichiro Amemiya ([@Hoishin](https://github.com/Hoishin)) and Jen Gorfine ([@jgorfine](https://github.com/jgorfine))!

##### Version 4.1.0 (2019-02-26)

- Added: [linebreak-style]. Use Prettier’s [end-of-line] option instead.
- Added: [react/self-closing-comp]. Thanks to Gaurav Gupta ([@gaurav5430](https://github.com/gaurav5430))!

##### Version 4.0.0 (2019-01-26)

- Breaking change: Support for [eslint-plugin-typescript] has been removed and replaced with support for its successor [@typescript-eslint/eslint-plugin]. Thanks to TANIGUCHI Masaya ([@ta2gch](https://github.com/ta2gch)) and everyone else who helped with this!
- Changed: [arrow-body-style] and [prefer-arrow-callback] are now marked as [special rules][arrow-special], since they might cause problems if using [eslint-plugin-prettier] and `--fix`. They are turned off by default, and the CLI helper tool will *warn* about them (but not error if you do enable them). This won’t break your linting checks, but do note that these rules will be disabled unless you explicitly enable them again, and that you might see new warnings when running the CLI helper tool.

##### Version 3.6.0 (2019-01-19)

- Added: Support for [eslint-plugin-babel]. Thanks to Matija Marohnić ([@silvenon](https://github.com/silvenon))!

##### Version 3.5.0 (2019-01-16)

- Fixed: The eslint-plugin-vue change from 3.4.0 has been reverted. That change requires eslint-plugin-vue@5, while many use eslint-plugin-vue@4. In other words, it was an accidental breaking change. Also, after thinking about it some more, it makes sense to have a Prettier-specific list of rules, rather than using the `vue/no-layout-rules` list, since there can be layout rules that don’t conflict with but rather complement Prettier.
- Added: New eslint-plugin-vue rules coming in the next version after 5.1.0.

##### Version 3.4.0 (2019-01-13)

- Added: Support for [eslint-plugin-typescript]. Thanks to Jed Fox ([@j-f1](https://github.com/j-f1))!
- Improved: The eslint-plugin-vue integration is now using the `vue/no-layout-rules` config behind the scenes, so it should automatically stay up-to-date when new eslint-plugin-vue versions are released. Thanks to Michał Sajnóg ([@michalsnik](https://github.com/michalsnik))!

##### Version 3.3.0 (2018-11-11)

- Added: The [vue/html-self-closing] rule (as a [special rule][vue/html-self-closing-special]). Thanks to Yamagishi Kazutoshi ([@ykzts](https://github.com/ykzts))!

##### Version 3.2.0 (2018-11-10)

- Added: Support for [eslint-plugin-vue].
- Fixed: The CLI helper tool should now work in Node.js 6 with npm 3 again. Thanks to Grant Snodgrass ([@meeber](https://github.com/meeber))!
- Improved: Updated documentation.

##### Version 3.1.0 (2018-09-22)

- Added: Support for [eslint-plugin-unicorn]. Thanks to John Mars ([@j0hnm4r5](https://github.com/j0hnm4r5))!
- Changed: The [quotes] rule is now allowed to be used to forbid unnecessary backticks. This means that the CLI helper tool no longer can automatically validate it, so you’ll need to refer the [quotes special rule documentation][quotes-special]. Thanks to Nick Petruzzelli ([@npetruzzelli](https://github.com/npetruzzelli))!

##### Version 3.0.1 (2018-08-13)

- Improved: `eslint --print-config` usage instructions.

##### Version 3.0.0 (2018-08-13)

- Breaking change: Dropped Node.js 4 support.

##### Version 2.10.0 (2018-08-13)

- Added: [flowtype/boolean-style]. Thanks to Mayank Agarwal ([@Mayank1791989](https://github.com/Mayank1791989))!
- Added: [react/jsx-child-element-spacing]
- Added: [react/jsx-props-no-multi-spaces]

##### Version 2.9.0 (2017-11-26)

- Added: The [implicit-arrow-linebreak] rule.

##### Version 2.8.0 (2017-11-19)

- Added: The [react/jsx-one-expression-per-line] rule.

##### Version 2.7.0 (2017-11-01)

- Added: The [lines-around-comment] rule (as a [special rule][lines-around-comment-special]). Thanks to Maurice de Beijer ([@mauricedb](https://github.com/mauricedb))!
- Added: The [no-unexpected-multiline] rule (as a [special rule][no-unexpected-multiline-special]). Thanks to Suhas Karanth ([@sudo-suhas](https://github.com/sudo-suhas))!

##### Version 2.6.0 (2017-09-23)

- Added: The [no-floating-decimal] rule.

##### Version 2.5.0 (2017-09-16)

- Added: Support for [eslint-plugin-standard]. Thanks to Christian Pekeler ([@pekeler](https://github.com/pekeler))!

##### Version 2.4.0 (2017-09-02)

- Added: The [function-paren-newline] rule (new in [ESLint 4.6.0]). Thanks to Pierre Vanduynslager ([@vanduynslagerp](https://github.com/vanduynslagerp))!

##### Version 2.3.0 (2017-06-30)

- Added: The (deprecated) [indent-legacy] rule. Thanks to M. Ian Graham ([@miangraham](https://github.com/miangraham))!

##### Version 2.2.0 (2017-06-17)

- Added: New rules from [ESLint 4.0.0]:
  - [array-element-newline]
  - [array-bracket-newline]
  - [semi-style]
  - [switch-colon-spacing]
- Added: [react/jsx-closing-tag-location]

##### Version 2.1.1 (2017-05-20)

- No code changes. Just updates to the readme.

##### Version 2.1.0 (2017-05-13)

- Added: The [no-tabs] rule (as a [special rule][no-tabs-special]). Thanks to Alex Meah ([@AlexMeah](https://github.com/AlexMeah))!

##### Version 2.0.0 (2017-05-07)

- Changed/Improved: The CLI helper tool is now more helpful.

  - The options of special rules are now validated if possible. If a special rule is enabled with non-conflicting options, the CLI no longer warns about it.
  - If only special rules that cannot be automatically checked are found, the CLI no longer exists with a non-zero exit code. Instead, it only warns about the rules.

- Changed: The [no-confusing-arrow] is now a special rule again, since it might conflict with recent Prettier versions.

- Removed: The `react/wrap-multilines` rule (which has been deprecated for a while), since it was removed in eslint-plugin-react@7.

##### Version 1.7.0 (2017-04-19)

- Changed: The [no-confusing-arrow] is no longer a special rule, but simply turned off, since recent Prettier versions make it redundant.
- Improved: The CLI helper tool now has a more helpful message for special rules, and exits with a different status code if only special rules were found. The exit codes are now documented as well.

##### Version 1.6.0 (2017-04-05)

- Added: The [curly] rule. Thanks to Martin Rädlinger ([@formatlos](https://github.com/formatlos))!

##### Version 1.5.0 (2017-03-04)

- Added: The [nonblock-statement-body-position] rule.

##### Version 1.4.1 (2017-02-28)

- Improved: eslint-config-prettier is now part of the [prettier] organization! This version updates all URLs to point to the new home of the project.

##### Version 1.4.0 (2017-02-26)

- Added: The [no-confusing-arrow] rule (as a [special rule][no-confusing-arrow-special]). Thanks to Dominik Ferber ([@dferber90](https://github.com/dferber90))!
- Added: Deprecated or removed rules that might conflict with prettier. Thanks to Dominik Ferber ([@dferber90](https://github.com/dferber90))!

##### Version 1.3.0 (2017-02-21)

- Added: The [template-tag-spacing] rule. Thanks to Thibault Derousseaux ([@tibdex](https://github.com/tibdex))!

##### Version 1.2.0 (2017-02-14)

- Added: The [one-var-declaration-per-line] rule. Thanks to Ruben Oostinga ([@0xR](https://github.com/0xR))!

##### Version 1.1.1 (2017-02-12)

- Minor documentation tweak: Changed "Exceptions" into "Special rules".

##### Version 1.1.0 (2017-02-10)

- Fixed: The [eslint-plugin-react] exclusion rules now actually work.
- Fixed: The CLI helper tool now works in Node.js 4. Thanks to Nathan Friedly ([@nfriedly](https://github.com/nfriedly))!
- Added: Support for [eslint-plugin-flowtype].
- Improved: Minor things for the CLI helper tool.
- Improved: There are now tests for everything.

##### Version 1.0.3 (2017-02-03)

- Fixed: `"extends": "prettier/react"` now actually works.

##### Version 1.0.2 (2017-01-30)

- Improved: CLI helper tool instructions.

##### Version 1.0.1 (2017-01-29)

- No difference from 1.0.0. Just an `npm publish` mistake.

##### Version 1.0.0 (2017-01-29)

- Initial release.

[@babel/eslint-plugin]: https://github.com/babel/babel/tree/main/eslint/babel-eslint-plugin

[@typescript-eslint/block-spacing]: https://github.com/typescript-eslint/typescript-eslint/blob/master/packages/eslint-plugin/docs/rules/block-spacing.md

[@typescript-eslint/brace-style]: https://github.com/typescript-eslint/typescript-eslint/blob/master/packages/eslint-plugin/docs/rules/brace-style.md

[@typescript-eslint/comma-dangle]: https://github.com/typescript-eslint/typescript-eslint/blob/master/packages/eslint-plugin/docs/rules/comma-dangle.md

[@typescript-eslint/comma-spacing]: https://github.com/typescript-eslint/typescript-eslint/blob/master/packages/eslint-plugin/docs/rules/comma-spacing.md

[@typescript-eslint/eslint-plugin]: https://github.com/typescript-eslint/typescript-eslint

[@typescript-eslint/func-call-spacing]: https://github.com/typescript-eslint/typescript-eslint/blob/master/packages/eslint-plugin/docs/rules/func-call-spacing.md

[@typescript-eslint/key-spacing]: https://github.com/typescript-eslint/typescript-eslint/blob/master/packages/eslint-plugin/docs/rules/key-spacing.md

[@typescript-eslint/keyword-spacing]: https://github.com/typescript-eslint/typescript-eslint/blob/master/packages/eslint-plugin/docs/rules/keyword-spacing.md

[@typescript-eslint/lines-around-comment]: https://github.com/typescript-eslint/typescript-eslint/blob/master/packages/eslint-plugin/docs/rules/lines-around-comment.md

[@typescript-eslint/no-extra-parens]: https://github.com/typescript-eslint/typescript-eslint/blob/master/packages/eslint-plugin/docs/rules/no-extra-parens.md

[@typescript-eslint/no-extra-semi]: https://github.com/typescript-eslint/typescript-eslint/blob/master/packages/eslint-plugin/docs/rules/no-extra-semi.md

[@typescript-eslint/object-curly-spacing]: https://github.com/typescript-eslint/typescript-eslint/blob/master/packages/eslint-plugin/docs/rules/object-curly-spacing.md

[@typescript-eslint/quotes-special]: https://github.com/prettier/eslint-config-prettier/blob/857257179fe69715362dfa9300762d6e534c0603/README.md#quotes

[@typescript-eslint/quotes]: https://github.com/typescript-eslint/typescript-eslint/blob/master/packages/eslint-plugin/docs/rules/quotes.md

[@typescript-eslint/semi]: https://github.com/typescript-eslint/typescript-eslint/blob/master/packages/eslint-plugin/docs/rules/semi.md

[@typescript-eslint/space-before-blocks]: https://github.com/typescript-eslint/typescript-eslint/blob/master/packages/eslint-plugin/docs/rules/space-before-blocks.md

[@typescript-eslint/space-before-function-paren]: https://github.com/typescript-eslint/typescript-eslint/blob/master/packages/eslint-plugin/docs/rules/space-before-function-paren.md

[@typescript-eslint/space-infix-ops]: https://github.com/typescript-eslint/typescript-eslint/blob/master/packages/eslint-plugin/docs/rules/space-infix-ops.md

[array-bracket-newline]: https://eslint.org/docs/rules/array-bracket-newline

[array-element-newline]: https://eslint.org/docs/rules/array-element-newline

[arrow-body-style]: https://eslint.org/docs/rules/arrow-body-style

[arrow-special]: https://github.com/prettier/eslint-config-prettier/blob/2c842675e55b91aecaef6f997d234ebf2d220ffb/README.md#arrow-body-style-and-prefer-arrow-callback

[curly]: https://eslint.org/docs/rules/curly

[deprecated-8.53.0]: https://eslint.org/blog/2023/10/deprecating-formatting-rules/

[end-of-line]: https://prettier.io/docs/en/options.html#end-of-line

[eslint 4.0.0]: https://eslint.org/blog/2017/06/eslint-v4.0.0-released

[eslint 4.6.0]: https://eslint.org/blog/2017/09/eslint-v4.6.0-released

[ESLINT_USE_FLAT_CONFIG]: https://github.com/prettier/eslint-config-prettier#eslint_use_flat_config-environment-variable

[eslint-plugin-babel]: https://github.com/babel/eslint-plugin-babel

[eslint-plugin-flowtype]: https://github.com/gajus/eslint-plugin-flowtype

[eslint-plugin-prettier]: https://github.com/prettier/eslint-plugin-prettier

[eslint-plugin-react]: https://github.com/yannickcr/eslint-plugin-react

[eslint-plugin-standard]: https://github.com/xjamundx/eslint-plugin-standard

[eslint-plugin-typescript]: https://github.com/bradzacher/eslint-plugin-typescript

[eslint-plugin-unicorn]: https://github.com/sindresorhus/eslint-plugin-unicorn

[eslint-plugin-vue]: https://github.com/vuejs/eslint-plugin-vue

[excluding deprecated rules]: https://github.com/prettier/eslint-config-prettier/tree/9f6b59486ad742dc12ad3be157ddff5f8454ef7a#excluding-deprecated-rules

[flowtype/boolean-style]: https://github.com/gajus/eslint-plugin-flowtype#eslint-plugin-flowtype-rules-boolean-style

[flowtype/object-type-curly-spacing]: https://github.com/gajus/eslint-plugin-flowtype#eslint-plugin-flowtype-rules-object-type-curly-spacing

[flowtype/quotes]: https://github.com/gajus/eslint-plugin-flowtype#eslint-plugin-flowtype-rules-quotes

[function-call-argument-newline]: https://eslint.org/docs/rules/function-call-argument-newline

[function-paren-newline]: https://eslint.org/docs/rules/function-paren-newline

[implicit-arrow-linebreak]: https://eslint.org/docs/rules/implicit-arrow-linebreak

[indent-legacy]: https://eslint.org/docs/rules/indent-legacy

[linebreak-style]: https://eslint.org/docs/rules/linebreak-style

[lines-around-comment-special]: https://github.com/prettier/eslint-config-prettier/blob/5399175c37466747aae9d407021dffec2c169c8b/README.md#lines-around-comment

[lines-around-comment]: https://eslint.org/docs/rules/lines-around-comment

[max-statements-per-line]: https://eslint.org/docs/latest/rules/max-statements-per-line

[no-confusing-arrow-special]: https://github.com/prettier/eslint-config-prettier/blob/08ac5bcc25c9cdc71864b4a1e4191e7d28dd2bc2/README.md#no-confusing-arrow

[no-confusing-arrow]: https://eslint.org/docs/rules/no-confusing-arrow

[no-floating-decimal]: https://eslint.org/docs/rules/no-floating-decimal

[no-tabs-special]: https://github.com/prettier/eslint-config-prettier/blob/dfa6e2b51f11a8001e9e7d38b78f03c7d75175ec/README.md#no-tabs

[no-tabs]: https://eslint.org/docs/rules/no-tabs

[no-unexpected-multiline-special]: https://github.com/prettier/eslint-config-prettier/blob/5399175c37466747aae9d407021dffec2c169c8b/README.md#no-unexpected-multiline

[no-unexpected-multiline]: https://eslint.org/docs/rules/no-unexpected-multiline

[nonblock-statement-body-position]: https://eslint.org/docs/rules/nonblock-statement-body-position

[one-var-declaration-per-line]: https://eslint.org/docs/rules/one-var-declaration-per-line

[plugin:prettier/recommended]: https://github.com/prettier/eslint-plugin-prettier#recommended-configuration

[prefer-arrow-callback]: https://eslint.org/docs/rules/prefer-arrow-callback

[prettier-prettier-config]: https://github.com/prettier/eslint-config-prettier/tree/03c79b9306892d4dbc828ce723813ef015baabc5#arrow-body-style-and-prefer-arrow-callback

[prettier-self-closing]: https://prettier.io/blog/2019/06/06/1.18.0.html#stop-converting-empty-jsx-elements-to-self-closing-elements-6127-by-duailibe

[prettier]: https://github.com/prettier

[quotes-special]: https://github.com/prettier/eslint-config-prettier/blob/8d264cd0a7f06c12e2e05415e0282a4f8f21ebc9/README.md#quotes

[quotes]: https://eslint.org/docs/rules/quotes

[react/jsx-child-element-spacing]: https://github.com/yannickcr/eslint-plugin-react/blob/master/docs/rules/jsx-child-element-spacing.md

[react/jsx-closing-tag-location]: https://github.com/yannickcr/eslint-plugin-react/blob/master/docs/rules/jsx-closing-tag-location.md

[react/jsx-curly-newline]: https://github.com/yannickcr/eslint-plugin-react/blob/master/docs/rules/jsx-curly-newline.md

[react/jsx-newline]: https://github.com/yannickcr/eslint-plugin-react/blob/master/docs/rules/jsx-newline.md

[react/jsx-one-expression-per-line]: https://github.com/yannickcr/eslint-plugin-react/blob/master/docs/rules/jsx-one-expression-per-line.md

[react/jsx-props-no-multi-spaces]: https://github.com/yannickcr/eslint-plugin-react/blob/master/docs/rules/jsx-props-no-multi-spaces.md

[react/self-closing-comp]: https://github.com/yannickcr/eslint-plugin-react/blob/master/docs/rules/self-closing-comp.md

[semi-style]: https://eslint.org/docs/rules/semi-style

[switch-colon-spacing]: https://eslint.org/docs/rules/switch-colon-spacing

[template-tag-spacing]: https://eslint.org/docs/rules/template-tag-spacing

[unicode-bom]: https://eslint.org/docs/rules/unicode-bom

[unicorn/empty-brace-spaces]: https://github.com/sindresorhus/eslint-plugin-unicorn/blob/master/docs/rules/empty-brace-spaces.md

[unicorn/no-nested-ternary]: https://github.com/sindresorhus/eslint-plugin-unicorn/blob/master/docs/rules/no-nested-ternary.md

[unicorn/template-indent-special]: https://github.com/prettier/eslint-config-prettier/blob/4110dff0c5b258be37506ecee9578cd7ff8e4759/README.md#unicorntemplate-indent

[unicorn/template-indent]: https://github.com/sindresorhus/eslint-plugin-unicorn/blob/master/docs/rules/template-indent.md

[vue/array-element-newline]: https://github.com/vuejs/eslint-plugin-vue/blob/master/docs/rules/array-element-newline.md

[vue/arrow-spacing]: https://github.com/vuejs/eslint-plugin-vue/blob/master/docs/rules/arrow-spacing.md

[vue/block-spacing]: https://github.com/vuejs/eslint-plugin-vue/blob/master/docs/rules/block-spacing.md

[vue/brace-style]: https://github.com/vuejs/eslint-plugin-vue/blob/master/docs/rules/brace-style.md

[vue/comma-dangle]: https://github.com/vuejs/eslint-plugin-vue/blob/master/docs/rules/comma-dangle.md

[vue/dot-location]: https://github.com/vuejs/eslint-plugin-vue/blob/master/docs/rules/dot-location.md

[vue/html-self-closing-special]: https://github.com/prettier/eslint-config-prettier/blob/d5e7af986221df5faedc12893d8dc3150a808693/README.md#vuehtml-self-closing

[vue/html-self-closing]: https://github.com/vuejs/eslint-plugin-vue/blob/master/docs/rules/html-self-closing.md

[vue/keyword-spacing]: https://github.com/vuejs/eslint-plugin-vue/blob/master/docs/rules/array-bracket-newline.md

[vue/keyword-spacing]: https://github.com/vuejs/eslint-plugin-vue/blob/master/docs/rules/block-tag-newline.md

[vue/keyword-spacing]: https://github.com/vuejs/eslint-plugin-vue/blob/master/docs/rules/keyword-spacing.md

[vue/max-len]: https://github.com/vuejs/eslint-plugin-vue/blob/master/docs/rules/max-len.md

[vue/multiline-ternary]: https://github.com/vuejs/eslint-plugin-vue/blob/master/docs/rules/multiline-ternary.md

[vue/quote-props]: https://github.com/vuejs/eslint-plugin-vue/blob/master/docs/rules/quote-props.md
renovate bot added a commit to andrei-picus-tink/auto-renovate that referenced this pull request Sep 10, 2025
| datasource | package                | from   | to     |
| ---------- | ---------------------- | ------ | ------ |
| npm        | eslint-config-prettier | 10.1.5 | 10.1.8 |


## [v10.1.8](https://github.com/prettier/eslint-config-prettier/releases/tag/v10.1.8)

### eslint-config-prettier

#### 10.1.5

##### Patch Changes

- [#332](prettier/eslint-config-prettier#332) [`60fef02`](prettier/eslint-config-prettier@60fef02) Thanks [@JounQin](https://github.com/JounQin)! - chore: add `funding` field into `package.json`

#### 10.1.4

##### Patch Changes

- [#328](prettier/eslint-config-prettier#328) [`94b4799`](prettier/eslint-config-prettier@94b4799) Thanks [@silvenon](https://github.com/silvenon)! - fix(cli): do not crash on no rules configured

#### 10.1.3

##### Patch Changes

- [#325](prettier/eslint-config-prettier#325) [`4e95a1d`](prettier/eslint-config-prettier@4e95a1d) Thanks [@pilikan](https://github.com/pilikan)! - fix: this package is `commonjs`, align its types correctly

#### 10.1.2

##### Patch Changes

- [#321](prettier/eslint-config-prettier#321) [`a8768bf`](prettier/eslint-config-prettier@a8768bf) Thanks [@Fdawgs](https://github.com/Fdawgs)! - chore(package): add homepage for some 3rd-party registry - see [#321](prettier/eslint-config-prettier#321) for more details

#### 10.1.1

##### Patch Changes

- [#309](prettier/eslint-config-prettier#309) [`eb56a5e`](prettier/eslint-config-prettier@eb56a5e) Thanks [@JounQin](https://github.com/JounQin)! - fix: separate the `/flat` entry for compatibility

  For flat config users, the previous `"eslint-config-prettier"` entry still works, but `"eslint-config-prettier/flat"` adds a new `name` property for [config-inspector](https://eslint.org/blog/2024/04/eslint-config-inspector/), we just can't add it for the default entry for compatibility.

  See also [#308](prettier/eslint-config-prettier#308)

  ```ts
  // before
  import eslintConfigPrettier from "eslint-config-prettier";

  // after
  import eslintConfigPrettier from "eslint-config-prettier/flat";
  ```

#### 10.1.0

##### Minor Changes

- [#306](prettier/eslint-config-prettier#306) [`56e2e34`](prettier/eslint-config-prettier@56e2e34) Thanks [@JounQin](https://github.com/JounQin)! - feat: migrate to exports field

#### 10.0.3

##### Patch Changes

- [#294](prettier/eslint-config-prettier#294) [`8dbbd6d`](prettier/eslint-config-prettier@8dbbd6d) Thanks [@FloEdelmann](https://github.com/FloEdelmann)! - feat: add name to config

- [#280](prettier/eslint-config-prettier#280) [`cba5737`](prettier/eslint-config-prettier@cba5737) Thanks [@zanminkian](https://github.com/zanminkian)! - feat: add declaration file

#### 10.0.2

##### Patch Changes

- [#299](prettier/eslint-config-prettier#299) [`e750edc`](prettier/eslint-config-prettier@e750edc) Thanks [@Fdawgs](https://github.com/Fdawgs)! - chore(package): explicitly declare js module type

#### 10.0.0

##### Major Changes

- [#272](prettier/eslint-config-prettier#272) [`5be64be`](prettier/eslint-config-prettier@5be64be) Thanks [@abrahamguo](https://github.com/abrahamguo)! - add support for [@Stylistic](https://github.com/stylistic) formatting rules

#### Versions before 10.0.0

##### Version 9.1.0 (2023-12-02)

- Added: [unicorn/template-indent], (as a [special rule][unicorn/template-indent-special]). Thanks to Gürgün Dayıoğlu ([@gurgunday](https://github.com/gurgunday))!
- Changed: All the [formatting rules that were deprecated in ESLint 8.53.0][deprecated-8.53.0] are now excluded if you set the `ESLINT_CONFIG_PRETTIER_NO_DEPRECATED` environment variable.

##### Version 9.0.0 (2023-08-05)

- Added: The CLI helper tool now works with eslint.config.js (flat config). Just like ESLint itself, the CLI tool automatically first tries eslint.config.js and then eslintrc, and you can force which one to use by setting the [ESLINT\_USE\_FLAT\_CONFIG][ESLINT_USE_FLAT_CONFIG] environment variable. Note that the *config* of eslint-config-prettier has always been compatible with eslint.config.js (flat config) – it was just the CLI tool that needed updating. On top of that, the docs have been updated to mention how to use both eslint.config.js (flat config) and eslintrc, and the tests now test both config systems.
- Changed: [unicode-bom] is no longer turned off. Prettier preserves the BOM if you have one, and does not add one if missing. It was wrong of eslint-config-prettier to disable that rule. If you get ESLint errors after upgrading, either add `"unicode-bom": "off"` to your config to disable it again, or run ESLint with `--fix` to fix all files according to the rule (add or remove BOM). Thanks to Nicolas Stepien ([@nstepien](https://github.com/nstepien))!

##### Version 8.10.0 (2023-08-03)

- Added: [max-statements-per-line]. Thanks to [@Zamiell](https://github.com/Zamiell)!

##### Version 8.9.0 (2023-07-27)

- Added: [vue/array-element-newline]. Thanks to [@xcatliu](https://github.com/xcatliu)!

##### Version 8.8.0 (2023-03-20)

- Added: [@typescript-eslint/lines-around-comment]. Thanks to [@ttionya](https://github.com/ttionya)!

##### Version 8.7.0 (2023-03-06)

- Added: [@typescript-eslint/block-spacing]. Thanks to [@ttionya](https://github.com/ttionya)!
- Added: [@typescript-eslint/key-spacing]. Thanks to [@ttionya](https://github.com/ttionya)!

##### Version 8.6.0 (2023-01-02)

- Added: [vue/multiline-ternary]. Thanks to [@xcatliu](https://github.com/xcatliu)!

##### Version 8.5.0 (2022-03-02)

- Added: [@typescript-eslint/space-before-blocks]. Thanks to Masafumi Koba ([@ybiquitous](https://github.com/ybiquitous))!

##### Version 8.4.0 (2022-02-19)

- Added: [vue/quote-props]. Thanks to [@xcatliu](https://github.com/xcatliu)!

##### Version 8.3.0 (2021-04-24)

- Added: Support for [@babel/eslint-plugin]. Thanks to Chip Zhang ([@ChipZhang](https://github.com/ChipZhang)) for the heads-up! ([eslint-plugin-babel] is still supported, too.)

##### Version 8.2.0 (2021-04-13)

- Added: [flowtype/quotes]. Thanks to Martin Zlámal ([@mrtnzlml](https://github.com/mrtnzlml))!

##### Version 8.1.0 (2021-02-24)

- Added: [flowtype/object-type-curly-spacing].
- Added: Dummy files for the configs removed in 8.0.0. The dummy files throw an error that try to guide you how to upgrade.

##### Version 8.0.0 (2021-02-21)

- Changed: All configs have been merged into one!

  To upgrade, change:

  ```json
  {
    "extends": [
      "some-other-config-you-use",
      "prettier",
      "prettier/@typescript-eslint",
      "prettier/babel",
      "prettier/flowtype",
      "prettier/react",
      "prettier/standard",
      "prettier/unicorn",
      "prettier/vue"
    ]
  }
  ```

  Into:

  <!-- prettier-ignore -->

  ```json
  {
    "extends": [
      "some-other-config-you-use",
      "prettier"
    ]
  }
  ```

  The `"prettier"` config now includes not just ESLint core rules, but also rules from all plugins. Much simpler!

  So … what’s the catch? Why haven’t we done this earlier? Turns out it’s just a sad mistake. I ([@lydell](https://github.com/lydell)) was confused when testing, and thought that turning off unknown rules in a config was an error. Thanks to Georgii Dolzhykov ([@thorn0](https://github.com/thorn0)) for pointing this out!

  If you use [eslint-plugin-prettier], all you need is [plugin:prettier/recommended]:

  <!-- prettier-ignore -->

  ```json
  {
    "extends": [
      "some-other-config-you-use",
      "plugin:prettier/recommended"
    ]
  }
  ```

  (The ["prettier/prettier" config][prettier-prettier-config] still exists separately. It’s the odd one out. The main `"prettier"` config does *not* include the rules from it.)

- Changed: The CLI helper tool now only prints warnings for [arrow-body-style] and [prefer-arrow-callback], just like other “special rules.” This means that if you’ve decided to use those rules and [eslint-plugin-prettier] at the same time, you’ll get warnings but exit code zero (success).

##### Version 7.2.0 (2021-01-18)

- Added: [@typescript-eslint/object-curly-spacing].
- Added: [react/jsx-newline].

##### Version 7.1.0 (2020-12-19)

- Added: [unicorn/empty-brace-spaces]. Thanks to fisker Cheung ([@fisker](https://github.com/fisker))!

##### Version 7.0.0 (2020-12-05)

- Changed: At least ESLint 7.0.0 is now required.

- Changed: [arrow-body-style] and [prefer-arrow-callback] are no longer turned off by default. They only need to be turned off if you use [eslint-plugin-prettier]. If you do, add `"prettier/prettier"` to your `"extends"` array to turn them off again.

  ```json
  {
    "extends": ["prettier", "prettier/prettier"],
    "plugins": ["prettier"],
    "rules": {
      "prettier/prettier": "error"
    }
  }
  ```

  Alternatively, update [eslint-plugin-prettier] to version 3.2.0 or later which automatically turns off these two rules in its `"plugin:prettier/recommended"` config.

  The CLI helper tool only warns about these rules if you have the `"prettier/prettier"` *rule* enabled for a file.

- Changed: `no-tabs` is now a validatable rule. If you use it, you should enable `allowIndentationTabs` so that the rule works regardless of your Prettier config:

  ```json
  {
    "rules": {
      "no-tabs": ["error", { "allowIndentationTabs": true }]
    }
  }
  ```

- Changed: The CLI helper tool is now called just `eslint-config-prettier` instead of `eslint-config-prettier-check`. This is so that `npx eslint-config-prettier` always works regardless of whether you have already installed `eslint-config-prettier` or not: If you have, the local installation is used; if you haven’t, `npx` downloads a temporary copy.

- Changed: The CLI helper tool no longer requires you to pipe the output of `eslint --print-config` to it. Instead, it does that automatically for you via ESLint API:s added in ESLint v7.

  Before:

  ```
  npx eslint --print-config index.js | npx eslint-config-prettier-check
  ```

  After:

  ```
  npx eslint-config-prettier index.js
  ```

- Improved: The npm package is now 75% smaller.

##### Version 6.15.0 (2020-10-27)

- Added: [@typescript-eslint/space-infix-ops]. Thanks to Masafumi Koba ([@ybiquitous](https://github.com/ybiquitous))!

##### Version 6.14.0 (2020-10-21)

- Added: New [eslint-plugin-vue] rules: \[vue/array-bracket-newline] and \[vue/block-tag-newline]. Thanks to [@xcatliu](https://github.com/xcatliu)!

##### Version 6.13.0 (2020-10-16)

- Added: New rules in [eslint-plugin-vue] 7.0 (which supports Vue 3.0). Thanks to [@xcatliu](https://github.com/xcatliu)!

##### Version 6.12.0 (2020-09-25)

- Added: [@typescript-eslint/comma-dangle]. Thanks to Masafumi Koba ([@ybiquitous](https://github.com/ybiquitous))!

##### Version 6.11.0 (2020-04-21)

- Added: [@typescript-eslint/keyword-spacing]. Thanks to Hans Bergren ([@hbergren](https://github.com/hbergren))!

##### Version 6.10.1 (2020-03-22)

- Improved: Recommend using `npx` when running the CLI helper tool.
- Updated: Mention that eslint-config-prettier has been tested with Prettier 2.0 and the latest versions of plugins.

##### Version 6.10.0 (2020-01-28)

- Added: [@typescript-eslint/comma-spacing]. Thanks to Masafumi Koba ([@ybiquitous](https://github.com/ybiquitous))!

##### Version 6.9.0 (2019-12-27)

- Added: [vue/max-len]. Thanks to [@xcatliu](https://github.com/xcatliu)!

##### Version 6.8.0 (2019-12-25)

- Added: [@typescript-eslint/no-extra-semi]. Thanks to [@xcatliu](https://github.com/xcatliu)!

##### Version 6.7.0 (2019-11-19)

- Added: [@typescript-eslint/space-before-function-paren]. Thanks to Masafumi Koba ([@ybiquitous](https://github.com/ybiquitous))!

##### Version 6.6.0 (2019-11-17)

- Added: New [eslint-plugin-vue] rules: [vue/dot-location] and [vue/keyword-spacing]. Thanks to [@xcatliu](https://github.com/xcatliu)!

##### Version 6.5.0 (2019-10-26)

- Added: Support for [excluding deprecated rules]. Thanks to Alex Ilyaev ([@alexilyaev](https://github.com/alexilyaev))!

##### Version 6.4.0 (2019-10-05)

- Added: [unicorn/no-nested-ternary]. Thanks to Yang Mingshan ([@yangmingshan](https://github.com/yangmingshan))!

##### Version 6.3.0 (2019-09-10)

- Added: [@typescript-eslint/brace-style]. Thanks to Masafumi Koba ([@ybiquitous](https://github.com/ybiquitous))!

##### Version 6.2.0 (2019-09-03)

- Added: [@typescript-eslint/quotes] (as a [special rule][@typescript-eslint/quotes-special]). Thanks to Masafumi Koba ([@ybiquitous](https://github.com/ybiquitous))!

##### Version 6.1.0 (2019-08-19)

- Added: [function-call-argument-newline] (new in ESLint 6.2.0). Thanks to Masafumi Koba ([@ybiquitous](https://github.com/ybiquitous))!

##### Version 6.0.0 (2019-06-25)

- Changed: The CLI helper tool now considers [no-confusing-arrow] to conflict if you use the default value of its `allowParens` option. The default was changed to `true` in ESLint 6, which conflicts with Prettier.

  If the CLI helper tool gives you errors about this after upgrading, the solution is to change this:

  ```json
  {
    "rules": {
      "no-confusing-arrow": ["error"]
    }
  }
  ```

  Into this:

  ```json
  {
    "rules": {
      "no-confusing-arrow": ["error", { "allowParens": false }]
    }
  }
  ```

  The latter works in both ESLint 6 as well as in ESLint 5 and older.

- Improved: `eslint --print-config` usage instructions. The CLI tool help text as well as the documentation has been updated to suggest commands that work in ESLint 6.0 as well as in ESLint 5 and older. (Instead of `eslint --print-config .`, use `eslint --print-config path/to/main.js`.)

##### Version 5.1.0 (2019-06-25)

- Added: [react/jsx-curly-newline]. Thanks to Masafumi Koba ([@ybiquitous](https://github.com/ybiquitous))!

##### Version 5.0.0 (2019-06-15)

- Removed: [react/self-closing-comp]. This rule was added in v4.1.0 not because it *conflicted* with Prettier but because it was *unnecessary* when using Prettier. However, in v1.18.0 [Prettier stopped converting empty elements to self-closing elements][prettier-self-closing]. So the rule is not unnecessary anymore.

  If you use Prettier v1.17.1 or older you should be able to upgrade eslint-config-prettier to v5.0.0 without having to do anything else.

  If you use Prettier v1.18.0 or newer, you might get lint errors about for example changing `<div></div>` into `<div />`. You have two options:

  - Run `eslint --fix` if you prefer to enforce self-closing elements where possible. This should fix all the errors.
  - Add `"react/self-closing-comp": "off"` to your ESLint config if you use autofix from your editor and you face the same [issue as Prettier did][prettier-self-closing].

- Changed: Node.js 6 is no longer officially supported, but v5.0.0 should still work with it.

##### Version 4.3.0 (2019-05-16)

- Added: New [eslint-plugin-vue] rules: [vue/arrow-spacing], [vue/block-spacing], [vue/brace-style] and [vue/comma-dangle].
- Added: New [@typescript-eslint/eslint-plugin] rules: [@typescript-eslint/func-call-spacing] and [@typescript-eslint/semi].

##### Version 4.2.0 (2019-04-25)

- Added: [@typescript-eslint/no-extra-parens]. Thanks to Keiichiro Amemiya ([@Hoishin](https://github.com/Hoishin)) and Jen Gorfine ([@jgorfine](https://github.com/jgorfine))!

##### Version 4.1.0 (2019-02-26)

- Added: [linebreak-style]. Use Prettier’s [end-of-line] option instead.
- Added: [react/self-closing-comp]. Thanks to Gaurav Gupta ([@gaurav5430](https://github.com/gaurav5430))!

##### Version 4.0.0 (2019-01-26)

- Breaking change: Support for [eslint-plugin-typescript] has been removed and replaced with support for its successor [@typescript-eslint/eslint-plugin]. Thanks to TANIGUCHI Masaya ([@ta2gch](https://github.com/ta2gch)) and everyone else who helped with this!
- Changed: [arrow-body-style] and [prefer-arrow-callback] are now marked as [special rules][arrow-special], since they might cause problems if using [eslint-plugin-prettier] and `--fix`. They are turned off by default, and the CLI helper tool will *warn* about them (but not error if you do enable them). This won’t break your linting checks, but do note that these rules will be disabled unless you explicitly enable them again, and that you might see new warnings when running the CLI helper tool.

##### Version 3.6.0 (2019-01-19)

- Added: Support for [eslint-plugin-babel]. Thanks to Matija Marohnić ([@silvenon](https://github.com/silvenon))!

##### Version 3.5.0 (2019-01-16)

- Fixed: The eslint-plugin-vue change from 3.4.0 has been reverted. That change requires eslint-plugin-vue@5, while many use eslint-plugin-vue@4. In other words, it was an accidental breaking change. Also, after thinking about it some more, it makes sense to have a Prettier-specific list of rules, rather than using the `vue/no-layout-rules` list, since there can be layout rules that don’t conflict with but rather complement Prettier.
- Added: New eslint-plugin-vue rules coming in the next version after 5.1.0.

##### Version 3.4.0 (2019-01-13)

- Added: Support for [eslint-plugin-typescript]. Thanks to Jed Fox ([@j-f1](https://github.com/j-f1))!
- Improved: The eslint-plugin-vue integration is now using the `vue/no-layout-rules` config behind the scenes, so it should automatically stay up-to-date when new eslint-plugin-vue versions are released. Thanks to Michał Sajnóg ([@michalsnik](https://github.com/michalsnik))!

##### Version 3.3.0 (2018-11-11)

- Added: The [vue/html-self-closing] rule (as a [special rule][vue/html-self-closing-special]). Thanks to Yamagishi Kazutoshi ([@ykzts](https://github.com/ykzts))!

##### Version 3.2.0 (2018-11-10)

- Added: Support for [eslint-plugin-vue].
- Fixed: The CLI helper tool should now work in Node.js 6 with npm 3 again. Thanks to Grant Snodgrass ([@meeber](https://github.com/meeber))!
- Improved: Updated documentation.

##### Version 3.1.0 (2018-09-22)

- Added: Support for [eslint-plugin-unicorn]. Thanks to John Mars ([@j0hnm4r5](https://github.com/j0hnm4r5))!
- Changed: The [quotes] rule is now allowed to be used to forbid unnecessary backticks. This means that the CLI helper tool no longer can automatically validate it, so you’ll need to refer the [quotes special rule documentation][quotes-special]. Thanks to Nick Petruzzelli ([@npetruzzelli](https://github.com/npetruzzelli))!

##### Version 3.0.1 (2018-08-13)

- Improved: `eslint --print-config` usage instructions.

##### Version 3.0.0 (2018-08-13)

- Breaking change: Dropped Node.js 4 support.

##### Version 2.10.0 (2018-08-13)

- Added: [flowtype/boolean-style]. Thanks to Mayank Agarwal ([@Mayank1791989](https://github.com/Mayank1791989))!
- Added: [react/jsx-child-element-spacing]
- Added: [react/jsx-props-no-multi-spaces]

##### Version 2.9.0 (2017-11-26)

- Added: The [implicit-arrow-linebreak] rule.

##### Version 2.8.0 (2017-11-19)

- Added: The [react/jsx-one-expression-per-line] rule.

##### Version 2.7.0 (2017-11-01)

- Added: The [lines-around-comment] rule (as a [special rule][lines-around-comment-special]). Thanks to Maurice de Beijer ([@mauricedb](https://github.com/mauricedb))!
- Added: The [no-unexpected-multiline] rule (as a [special rule][no-unexpected-multiline-special]). Thanks to Suhas Karanth ([@sudo-suhas](https://github.com/sudo-suhas))!

##### Version 2.6.0 (2017-09-23)

- Added: The [no-floating-decimal] rule.

##### Version 2.5.0 (2017-09-16)

- Added: Support for [eslint-plugin-standard]. Thanks to Christian Pekeler ([@pekeler](https://github.com/pekeler))!

##### Version 2.4.0 (2017-09-02)

- Added: The [function-paren-newline] rule (new in [ESLint 4.6.0]). Thanks to Pierre Vanduynslager ([@vanduynslagerp](https://github.com/vanduynslagerp))!

##### Version 2.3.0 (2017-06-30)

- Added: The (deprecated) [indent-legacy] rule. Thanks to M. Ian Graham ([@miangraham](https://github.com/miangraham))!

##### Version 2.2.0 (2017-06-17)

- Added: New rules from [ESLint 4.0.0]:
  - [array-element-newline]
  - [array-bracket-newline]
  - [semi-style]
  - [switch-colon-spacing]
- Added: [react/jsx-closing-tag-location]

##### Version 2.1.1 (2017-05-20)

- No code changes. Just updates to the readme.

##### Version 2.1.0 (2017-05-13)

- Added: The [no-tabs] rule (as a [special rule][no-tabs-special]). Thanks to Alex Meah ([@AlexMeah](https://github.com/AlexMeah))!

##### Version 2.0.0 (2017-05-07)

- Changed/Improved: The CLI helper tool is now more helpful.

  - The options of special rules are now validated if possible. If a special rule is enabled with non-conflicting options, the CLI no longer warns about it.
  - If only special rules that cannot be automatically checked are found, the CLI no longer exists with a non-zero exit code. Instead, it only warns about the rules.

- Changed: The [no-confusing-arrow] is now a special rule again, since it might conflict with recent Prettier versions.

- Removed: The `react/wrap-multilines` rule (which has been deprecated for a while), since it was removed in eslint-plugin-react@7.

##### Version 1.7.0 (2017-04-19)

- Changed: The [no-confusing-arrow] is no longer a special rule, but simply turned off, since recent Prettier versions make it redundant.
- Improved: The CLI helper tool now has a more helpful message for special rules, and exits with a different status code if only special rules were found. The exit codes are now documented as well.

##### Version 1.6.0 (2017-04-05)

- Added: The [curly] rule. Thanks to Martin Rädlinger ([@formatlos](https://github.com/formatlos))!

##### Version 1.5.0 (2017-03-04)

- Added: The [nonblock-statement-body-position] rule.

##### Version 1.4.1 (2017-02-28)

- Improved: eslint-config-prettier is now part of the [prettier] organization! This version updates all URLs to point to the new home of the project.

##### Version 1.4.0 (2017-02-26)

- Added: The [no-confusing-arrow] rule (as a [special rule][no-confusing-arrow-special]). Thanks to Dominik Ferber ([@dferber90](https://github.com/dferber90))!
- Added: Deprecated or removed rules that might conflict with prettier. Thanks to Dominik Ferber ([@dferber90](https://github.com/dferber90))!

##### Version 1.3.0 (2017-02-21)

- Added: The [template-tag-spacing] rule. Thanks to Thibault Derousseaux ([@tibdex](https://github.com/tibdex))!

##### Version 1.2.0 (2017-02-14)

- Added: The [one-var-declaration-per-line] rule. Thanks to Ruben Oostinga ([@0xR](https://github.com/0xR))!

##### Version 1.1.1 (2017-02-12)

- Minor documentation tweak: Changed "Exceptions" into "Special rules".

##### Version 1.1.0 (2017-02-10)

- Fixed: The [eslint-plugin-react] exclusion rules now actually work.
- Fixed: The CLI helper tool now works in Node.js 4. Thanks to Nathan Friedly ([@nfriedly](https://github.com/nfriedly))!
- Added: Support for [eslint-plugin-flowtype].
- Improved: Minor things for the CLI helper tool.
- Improved: There are now tests for everything.

##### Version 1.0.3 (2017-02-03)

- Fixed: `"extends": "prettier/react"` now actually works.

##### Version 1.0.2 (2017-01-30)

- Improved: CLI helper tool instructions.

##### Version 1.0.1 (2017-01-29)

- No difference from 1.0.0. Just an `npm publish` mistake.

##### Version 1.0.0 (2017-01-29)

- Initial release.

[@babel/eslint-plugin]: https://github.com/babel/babel/tree/main/eslint/babel-eslint-plugin

[@typescript-eslint/block-spacing]: https://github.com/typescript-eslint/typescript-eslint/blob/master/packages/eslint-plugin/docs/rules/block-spacing.md

[@typescript-eslint/brace-style]: https://github.com/typescript-eslint/typescript-eslint/blob/master/packages/eslint-plugin/docs/rules/brace-style.md

[@typescript-eslint/comma-dangle]: https://github.com/typescript-eslint/typescript-eslint/blob/master/packages/eslint-plugin/docs/rules/comma-dangle.md

[@typescript-eslint/comma-spacing]: https://github.com/typescript-eslint/typescript-eslint/blob/master/packages/eslint-plugin/docs/rules/comma-spacing.md

[@typescript-eslint/eslint-plugin]: https://github.com/typescript-eslint/typescript-eslint

[@typescript-eslint/func-call-spacing]: https://github.com/typescript-eslint/typescript-eslint/blob/master/packages/eslint-plugin/docs/rules/func-call-spacing.md

[@typescript-eslint/key-spacing]: https://github.com/typescript-eslint/typescript-eslint/blob/master/packages/eslint-plugin/docs/rules/key-spacing.md

[@typescript-eslint/keyword-spacing]: https://github.com/typescript-eslint/typescript-eslint/blob/master/packages/eslint-plugin/docs/rules/keyword-spacing.md

[@typescript-eslint/lines-around-comment]: https://github.com/typescript-eslint/typescript-eslint/blob/master/packages/eslint-plugin/docs/rules/lines-around-comment.md

[@typescript-eslint/no-extra-parens]: https://github.com/typescript-eslint/typescript-eslint/blob/master/packages/eslint-plugin/docs/rules/no-extra-parens.md

[@typescript-eslint/no-extra-semi]: https://github.com/typescript-eslint/typescript-eslint/blob/master/packages/eslint-plugin/docs/rules/no-extra-semi.md

[@typescript-eslint/object-curly-spacing]: https://github.com/typescript-eslint/typescript-eslint/blob/master/packages/eslint-plugin/docs/rules/object-curly-spacing.md

[@typescript-eslint/quotes-special]: https://github.com/prettier/eslint-config-prettier/blob/857257179fe69715362dfa9300762d6e534c0603/README.md#quotes

[@typescript-eslint/quotes]: https://github.com/typescript-eslint/typescript-eslint/blob/master/packages/eslint-plugin/docs/rules/quotes.md

[@typescript-eslint/semi]: https://github.com/typescript-eslint/typescript-eslint/blob/master/packages/eslint-plugin/docs/rules/semi.md

[@typescript-eslint/space-before-blocks]: https://github.com/typescript-eslint/typescript-eslint/blob/master/packages/eslint-plugin/docs/rules/space-before-blocks.md

[@typescript-eslint/space-before-function-paren]: https://github.com/typescript-eslint/typescript-eslint/blob/master/packages/eslint-plugin/docs/rules/space-before-function-paren.md

[@typescript-eslint/space-infix-ops]: https://github.com/typescript-eslint/typescript-eslint/blob/master/packages/eslint-plugin/docs/rules/space-infix-ops.md

[array-bracket-newline]: https://eslint.org/docs/rules/array-bracket-newline

[array-element-newline]: https://eslint.org/docs/rules/array-element-newline

[arrow-body-style]: https://eslint.org/docs/rules/arrow-body-style

[arrow-special]: https://github.com/prettier/eslint-config-prettier/blob/2c842675e55b91aecaef6f997d234ebf2d220ffb/README.md#arrow-body-style-and-prefer-arrow-callback

[curly]: https://eslint.org/docs/rules/curly

[deprecated-8.53.0]: https://eslint.org/blog/2023/10/deprecating-formatting-rules/

[end-of-line]: https://prettier.io/docs/en/options.html#end-of-line

[eslint 4.0.0]: https://eslint.org/blog/2017/06/eslint-v4.0.0-released

[eslint 4.6.0]: https://eslint.org/blog/2017/09/eslint-v4.6.0-released

[ESLINT_USE_FLAT_CONFIG]: https://github.com/prettier/eslint-config-prettier#eslint_use_flat_config-environment-variable

[eslint-plugin-babel]: https://github.com/babel/eslint-plugin-babel

[eslint-plugin-flowtype]: https://github.com/gajus/eslint-plugin-flowtype

[eslint-plugin-prettier]: https://github.com/prettier/eslint-plugin-prettier

[eslint-plugin-react]: https://github.com/yannickcr/eslint-plugin-react

[eslint-plugin-standard]: https://github.com/xjamundx/eslint-plugin-standard

[eslint-plugin-typescript]: https://github.com/bradzacher/eslint-plugin-typescript

[eslint-plugin-unicorn]: https://github.com/sindresorhus/eslint-plugin-unicorn

[eslint-plugin-vue]: https://github.com/vuejs/eslint-plugin-vue

[excluding deprecated rules]: https://github.com/prettier/eslint-config-prettier/tree/9f6b59486ad742dc12ad3be157ddff5f8454ef7a#excluding-deprecated-rules

[flowtype/boolean-style]: https://github.com/gajus/eslint-plugin-flowtype#eslint-plugin-flowtype-rules-boolean-style

[flowtype/object-type-curly-spacing]: https://github.com/gajus/eslint-plugin-flowtype#eslint-plugin-flowtype-rules-object-type-curly-spacing

[flowtype/quotes]: https://github.com/gajus/eslint-plugin-flowtype#eslint-plugin-flowtype-rules-quotes

[function-call-argument-newline]: https://eslint.org/docs/rules/function-call-argument-newline

[function-paren-newline]: https://eslint.org/docs/rules/function-paren-newline

[implicit-arrow-linebreak]: https://eslint.org/docs/rules/implicit-arrow-linebreak

[indent-legacy]: https://eslint.org/docs/rules/indent-legacy

[linebreak-style]: https://eslint.org/docs/rules/linebreak-style

[lines-around-comment-special]: https://github.com/prettier/eslint-config-prettier/blob/5399175c37466747aae9d407021dffec2c169c8b/README.md#lines-around-comment

[lines-around-comment]: https://eslint.org/docs/rules/lines-around-comment

[max-statements-per-line]: https://eslint.org/docs/latest/rules/max-statements-per-line

[no-confusing-arrow-special]: https://github.com/prettier/eslint-config-prettier/blob/08ac5bcc25c9cdc71864b4a1e4191e7d28dd2bc2/README.md#no-confusing-arrow

[no-confusing-arrow]: https://eslint.org/docs/rules/no-confusing-arrow

[no-floating-decimal]: https://eslint.org/docs/rules/no-floating-decimal

[no-tabs-special]: https://github.com/prettier/eslint-config-prettier/blob/dfa6e2b51f11a8001e9e7d38b78f03c7d75175ec/README.md#no-tabs

[no-tabs]: https://eslint.org/docs/rules/no-tabs

[no-unexpected-multiline-special]: https://github.com/prettier/eslint-config-prettier/blob/5399175c37466747aae9d407021dffec2c169c8b/README.md#no-unexpected-multiline

[no-unexpected-multiline]: https://eslint.org/docs/rules/no-unexpected-multiline

[nonblock-statement-body-position]: https://eslint.org/docs/rules/nonblock-statement-body-position

[one-var-declaration-per-line]: https://eslint.org/docs/rules/one-var-declaration-per-line

[plugin:prettier/recommended]: https://github.com/prettier/eslint-plugin-prettier#recommended-configuration

[prefer-arrow-callback]: https://eslint.org/docs/rules/prefer-arrow-callback

[prettier-prettier-config]: https://github.com/prettier/eslint-config-prettier/tree/03c79b9306892d4dbc828ce723813ef015baabc5#arrow-body-style-and-prefer-arrow-callback

[prettier-self-closing]: https://prettier.io/blog/2019/06/06/1.18.0.html#stop-converting-empty-jsx-elements-to-self-closing-elements-6127-by-duailibe

[prettier]: https://github.com/prettier

[quotes-special]: https://github.com/prettier/eslint-config-prettier/blob/8d264cd0a7f06c12e2e05415e0282a4f8f21ebc9/README.md#quotes

[quotes]: https://eslint.org/docs/rules/quotes

[react/jsx-child-element-spacing]: https://github.com/yannickcr/eslint-plugin-react/blob/master/docs/rules/jsx-child-element-spacing.md

[react/jsx-closing-tag-location]: https://github.com/yannickcr/eslint-plugin-react/blob/master/docs/rules/jsx-closing-tag-location.md

[react/jsx-curly-newline]: https://github.com/yannickcr/eslint-plugin-react/blob/master/docs/rules/jsx-curly-newline.md

[react/jsx-newline]: https://github.com/yannickcr/eslint-plugin-react/blob/master/docs/rules/jsx-newline.md

[react/jsx-one-expression-per-line]: https://github.com/yannickcr/eslint-plugin-react/blob/master/docs/rules/jsx-one-expression-per-line.md

[react/jsx-props-no-multi-spaces]: https://github.com/yannickcr/eslint-plugin-react/blob/master/docs/rules/jsx-props-no-multi-spaces.md

[react/self-closing-comp]: https://github.com/yannickcr/eslint-plugin-react/blob/master/docs/rules/self-closing-comp.md

[semi-style]: https://eslint.org/docs/rules/semi-style

[switch-colon-spacing]: https://eslint.org/docs/rules/switch-colon-spacing

[template-tag-spacing]: https://eslint.org/docs/rules/template-tag-spacing

[unicode-bom]: https://eslint.org/docs/rules/unicode-bom

[unicorn/empty-brace-spaces]: https://github.com/sindresorhus/eslint-plugin-unicorn/blob/master/docs/rules/empty-brace-spaces.md

[unicorn/no-nested-ternary]: https://github.com/sindresorhus/eslint-plugin-unicorn/blob/master/docs/rules/no-nested-ternary.md

[unicorn/template-indent-special]: https://github.com/prettier/eslint-config-prettier/blob/4110dff0c5b258be37506ecee9578cd7ff8e4759/README.md#unicorntemplate-indent

[unicorn/template-indent]: https://github.com/sindresorhus/eslint-plugin-unicorn/blob/master/docs/rules/template-indent.md

[vue/array-element-newline]: https://github.com/vuejs/eslint-plugin-vue/blob/master/docs/rules/array-element-newline.md

[vue/arrow-spacing]: https://github.com/vuejs/eslint-plugin-vue/blob/master/docs/rules/arrow-spacing.md

[vue/block-spacing]: https://github.com/vuejs/eslint-plugin-vue/blob/master/docs/rules/block-spacing.md

[vue/brace-style]: https://github.com/vuejs/eslint-plugin-vue/blob/master/docs/rules/brace-style.md

[vue/comma-dangle]: https://github.com/vuejs/eslint-plugin-vue/blob/master/docs/rules/comma-dangle.md

[vue/dot-location]: https://github.com/vuejs/eslint-plugin-vue/blob/master/docs/rules/dot-location.md

[vue/html-self-closing-special]: https://github.com/prettier/eslint-config-prettier/blob/d5e7af986221df5faedc12893d8dc3150a808693/README.md#vuehtml-self-closing

[vue/html-self-closing]: https://github.com/vuejs/eslint-plugin-vue/blob/master/docs/rules/html-self-closing.md

[vue/keyword-spacing]: https://github.com/vuejs/eslint-plugin-vue/blob/master/docs/rules/array-bracket-newline.md

[vue/keyword-spacing]: https://github.com/vuejs/eslint-plugin-vue/blob/master/docs/rules/block-tag-newline.md

[vue/keyword-spacing]: https://github.com/vuejs/eslint-plugin-vue/blob/master/docs/rules/keyword-spacing.md

[vue/max-len]: https://github.com/vuejs/eslint-plugin-vue/blob/master/docs/rules/max-len.md

[vue/multiline-ternary]: https://github.com/vuejs/eslint-plugin-vue/blob/master/docs/rules/multiline-ternary.md

[vue/quote-props]: https://github.com/vuejs/eslint-plugin-vue/blob/master/docs/rules/quote-props.md
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

[CLI] Handle undefined computed config
2 participants