Closed fisker closed 6 months ago
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:
configs.recommended
namespace.
plugin.configs.recommended
is reserved for legacy configurations.
I don't want to change it for backwards compatibility.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.*.js
file.
e.g. import { recommended } from 'eslint-plugin-regexp/configs'
.plugin.configs
an object-like function with properties.
e.g. plugin.configs('recommended')
.eslint-plugin-unicorn
decide to use plugin.configs['flat/recommended']
, its used in ESLint blog post, see also discussion.
Thank you for sharing the discussion! I will check it.
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']
plugin.configs['recommended-flat']
import recommended from 'eslint-plugin-x/configs/recommended'
plugin.configs.recommended
for new configuration and 'plugin:security/recommended-legacy'
for legacy configuration.import recommended from 'eslint-plugin-x/recommended'
It looks like eslint-config-standard has dropped support for legacy configurations. https://github.com/standard/eslint-config-standard
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
).
Unicorn didn't use /config
because this requires exports
to be added in package.json, since it should support both import and require.
See https://eslint.org/docs/latest/use/configure/configuration-files-new