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

Support flat config (eslint.config.js) #695

Closed
fisker opened this issue Jan 18, 2024 · 6 comments · Fixed by #702
Closed

Support flat config (eslint.config.js) #695

fisker opened this issue Jan 18, 2024 · 6 comments · Fixed by #702
Labels
enhancement New feature or request

Comments

@fisker
Copy link

fisker commented Jan 18, 2024

See https://eslint.org/docs/latest/use/configure/configuration-files-new

@fisker fisker added the enhancement New feature or request label Jan 18, 2024
@ota-meshi ota-meshi pinned this issue Jan 18, 2024
@ota-meshi
Copy link
Owner

I'm still wondering how best practice is to export a new shareable configuration 🤔
I would like to export using the same method as the popular eslint-plugin, but I don't know what it is yet.

Otherwise, I can think of the following method:

  • Use configs.recommended namespace.
    plugin.configs.recommended is reserved for legacy configurations.
    I don't want to change it for backwards compatibility.
  • Use a new namespace.
    I don't want to use names like plugin.flatConfigs.recommended, and plugin.configs.flatRecommended. "Flat" quickly becomes meaningless.
    Also, I think it is difficult to understand the difference between config and configs.
    I'm not sure what namespace to use instead that would be easier for people to use.
  • Use new *.js file.
    e.g. import { recommended } from 'eslint-plugin-regexp/configs'.
  • Make plugin.configs an object-like function with properties.
    e.g. plugin.configs('recommended').

@fisker
Copy link
Author

fisker commented Jan 18, 2024

eslint-plugin-unicorn decide to use plugin.configs['flat/recommended'], its used in ESLint blog post, see also discussion.

@ota-meshi
Copy link
Owner

Thank you for sharing the discussion! I will check it.

@ota-meshi
Copy link
Owner

ota-meshi commented Jan 18, 2024

This is just a note of my research.
I looked into how each plugin supported flat configurations. By the way, none of the plugins I maintain support flat configurations yet.

plugin.configs['flat/recommended']

import recommended from 'eslint-plugin-x/configs/recommended'

Renamed legacy configurations (Breaking change)

Not supported yet (PR is open)

Not supported yet


Unorganized notes

It looks like eslint-config-standard has dropped support for legacy configurations.
https://github.com/standard/eslint-config-standard

@bradzacher
Copy link

bradzacher commented Jan 18, 2024

Note: @typescript-eslint is using a new package because we have both the plugin and the parser. It does also help us out as we don't even need to think about the problem cos it comes for free heh.

The advice from upstream is the breaking change approach - though I don't like it, personally as it's making second class citizens of users not on flat configs.

There's no specific reason that you need to make it available on the .config export of your package. You could also do it as a different exported name, or a separate path (eslint-plugin-regexp/config).

@fisker
Copy link
Author

fisker commented Jan 19, 2024

Unicorn didn't use /config because this requires exports to be added in package.json, since it should support both import and require.

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

Successfully merging a pull request may close this issue.

3 participants