Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Compatibility with new eslint config spec (flat config) #231

Closed
jjangga0214 opened this issue Sep 9, 2022 · 4 comments · Fixed by #261
Closed

Compatibility with new eslint config spec (flat config) #231

jjangga0214 opened this issue Sep 9, 2022 · 4 comments · Fixed by #261

Comments

@jjangga0214
Copy link

jjangga0214 commented Sep 9, 2022

Eslint announced a new config spec.
https://eslint.org/docs/latest/user-guide/configuring/configuration-files-new

스크린샷 2022-09-09 오후 10 07 49

According to eslint's official blog, though backward compatibility was taken care of, not all shareable configs continue to work with the new config system.

Is eslint-config-prettier compatible with the new config?

Thanks.

@lydell
Copy link
Member

lydell commented Sep 9, 2022

I tried it out quickly, and in short: Yes, it works. But there are some things to do as well.

eslint.config.js:

import prettier from "eslint-config-prettier";

export default [
    "eslint:recommended",
    prettier,
];

The above successfully disables the no-mixed-spaces-and-tabs rule from eslint:recommended! 🎉

And this:

import prettier from "eslint-config-prettier";

export default [
    {
        rules: {
            semi: "error",
        }
    },
    prettier,
];

The above successfully turns off the semi rule. 🎉 Even though semi wasn’t set by another config. This wasn’t possible before.

However, the CLI helper tool does not work:

❯ npx eslint-config-prettier index.js
No ESLint configuration found in /Users/lydell/stuff/eslint.

TODO:

  • Make the CLI helper tool work and make sense with the new config format.
  • Update documentation with examples of both old and new format.
  • Make it clear in the documentation that you need to put prettier after things that you want to override, and that it can “win” over not just other configs but also your own config (as mentioned above).

However, it might be too early days to do this just yet: eslint/eslint#13481

@lydell
Copy link
Member

lydell commented Sep 9, 2022

Changing this line:

const { ESLint } = require(require.resolve("eslint", {

-const { ESLint } = require(require.resolve("eslint", {
+const { FlatESLint: ESLint } = require(require.resolve("eslint/use-at-your-own-risk", {

… seems to make the CLI work with the new config system. However, that is still an unsupported API, and I need to figure out how to support both the old and new config systems at the same time.

I think the conclusion for now is:

  • The main part of eslint-config-prettier works already with the new config system.
  • Early adopters can find this issue for information.
  • Let’s wait for ESLint to progress more. The above experiment indicates that we should be able to make the CLI work without too much effort when the time comes.

@lydell lydell changed the title Compatibility with new eslint config spec Compatibility with new eslint config spec (flat config) Jun 26, 2023
@theoparis

This comment was marked as off-topic.

@lydell
Copy link
Member

lydell commented Aug 5, 2023

The updated CLI tool was released in v9.0.0.

The docs and tests have been updated too.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging a pull request may close this issue.

3 participants