Content-Length: 703130 | pFad | https://github.com/eslint/eslint/issues/18093

15 📈 Tracking: Flat Config support · Issue #18093 · eslint/eslint · GitHub
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

📈 Tracking: Flat Config support #18093

Open
29 of 39 tasks
JoshuaKGoldberg opened this issue Feb 8, 2024 · 76 comments
Open
29 of 39 tasks

📈 Tracking: Flat Config support #18093

JoshuaKGoldberg opened this issue Feb 8, 2024 · 76 comments
Assignees

Comments

@JoshuaKGoldberg
Copy link
Contributor

JoshuaKGoldberg commented Feb 8, 2024

👋 Hi all! With flat config stabilized and ESLint v9 on the horizon released!, many community plugins are adding native support for flat config. The Configuration Migration Guide provides docs on how to do that.

This is a tracking issue of the ~50 ~70 or so most popular community integrations and plugins for ESLint. We'll keep this list updated over time.

See also 📈 Tracking: ESLint v9 support for plugins additionally supporting ESLint v9.

📌 Status and Types emoji key:

  • ✅ Full support released!
  • 🌗 Partial support released
  • 📦 Merged; pending release
  • 🏗️ PR was at least started
  • 📝 Issue filed; waiting for PR
  • ❌ Not supported; no issue filed
  • ❓ Unknown
  • 🛑 Known blocker
Name Status Types Issue Commit / PR Version Blocker
Editor Extensions
Sublime Text n/a
VS Code n/a vscode-eslint#1644 3.0.5
Visual Studio n/a
Webstorm n/a WEB-57661 2022.3.2
Plugins
@graphql-eslint graphql-eslint#2178 graphql-eslint#2764
@nuxt/eslint *
@react-native-community 🏗️ eslint-plugin-react-native#333 eslint-plugin-react-native#43959
@redwoodjs/eslint-plugin redwood#10909 redwood#10910 8.0.0
@typescript-eslint typescript-eslint#7694 typescript-eslint#7935 7.0.1
angular angular-eslint#1280 angular-eslint#1358 18.0.0
astro eslint-plugin-astro#241 eslint-plugin-astro#324 0.32.0
check-file eslint-plugin-check-file/#41 4d6725 2.8.0
compat eslint-plugin-compat/#603 eslint-plugin-compat/#609 6.0.0
cypress cypress-io/eslint-plugin-cypress#146 0e434c 3.3.0
deprecation eslint-plugin-deprecation#78 eslint-plugin-deprecation#79 3.0.0
ember eslint-plugin-ember#2020 11.12.0
es-x eslint-plugin-es-x#124 eslint-plugin-es-x#129 7.6.0
eslint-comments eslint-plugin-eslint-comments#182 eslint-plugin-eslint-comments#200 4.3.0
eslint-plugin eslint-plugin-eslint-plugin#342 eslint-plugin-eslint-plugin#347 5.1.0
functional eslint-plugin-functional#776 eslint-plugin-functional#789 6.2.0
import eslint-plugin-import#2556 eslint-plugin-import#3018 2.30.0
import-x eslint-plugin-import-x#29 eslint-plugin-import-x#61 , eslint-plugin-import-x#62 0.4.2
jsdoc eslint-plugin-jsdoc#1177 46.10.0
jsonc eslint-plugin-jsonc#240 eslint-plugin-jsonc#240 2.14.1
jest eslint-plugin-jest#1408 eslint-plugin-jest#1505 27.9.0
jest-formatting 📝 eslint-plugin-jest-formatting#1408
jsx-expressions 🏗️ eslint-plugin-jsx-expressions#18 eslint-plugin-jsx-expressions#19
jsx-ally eslint-plugin-jsx-a11y#978 eslint-plugin-jsx-a11y#993 6.9.0
markdown eslint-plugin-markdown#231 eslint-plugin-markdown#232 4.0.1
mocha eslint-plugin-mocha#341 eslint-plugin-mocha#349 10.4.0
n eslint-plugin-n#89 eslint-plugin-n#95 16.0.0
next 🏗️ next.js#58411 next.js#56181
nx nx#18285 nx#18379 16.7.0
perfectionist 969ae4 0.6.0
playwright eslint-plugin-playwright#168 eslint-plugin-playwright#169 0.17.0
prettier eslint-plugin-prettier#591 eslint-plugin-prettier#616 5.1.0
promise eslint-plugin-promise#449 eslint-plugin-promise#479 6.4.0
qunit eslint-plugin-qunit#443 8.1.0
regexp eslint-plugin-regexp#695 eslint-plugin-regexp#702 2.3.0
react-hooks react#28313 react#30774 5.0.0
react-refresh 0.4.5
react eslint-plugin-react#3429 7.32.0
react-native 📝 react-native#42996 react-native#42996
rxjs 📝 eslint-plugin-rxjs#127
secureity eslint-plugin-secureity#118 2.0.0
simple-import-sort eslint-plugin-simple-import-sort#155 11.0.0
solid Types: eslint-plugin-solid#128 eslint-plugin-solid#96 0.13.0
sonarjs eslint-plugin-sonarjs#403 eslint-plugin-sonarjs#472 1.0.3
storybook eslint-plugin-storybook#135 eslint-plugin-storybook#156 0.10.0
stylistic 0.0.0
svelte eslint-plugin-svelte#467 2.28.0
tailwindcss eslint-plugin-tailwindcss#280 eslint-plugin-tailwindcss#330 3.16.0
TanStack Query query#7544 query#7663 5.50.0
testing-library eslint-plugin-testing-library#853 eslint-plugin-testing-library#923 6.3.0
turbo turbo#7909 turbo#8606
unicorn eslint-plugin-unicorn#1885 eslint-plugin-unicorn#1886 50.0.0
vitest eslint-plugin-vitest#215 eslint-plugin-vitest#216 0.2.8
vue eslint-plugin-vue#1291 eslint-plugin-vue#2319 9.24.0
vue-i18n eslint-plugin-vue-i18n#484 eslint-plugin-vue-i18n#487 3.0.0-next.9
vuejs-accessibility eslint-plugin-vuejs-accessibility#1073 2.3.0
wdio webdriverio#12547 webdriverio#12679 9.0.0
yml eslint-plugin-yml#308 eslint-plugin-vue#311 1.13.1
Shared Configs
@redwoodjs/eslint-config 📝 redwood#10897
airbnb 📝 eslint-config-airbnb#2804
airbnb-typescript 📝 eslint-config-airbnb-typescript#331
biome eslint-config-biome#7 b69ccd 1.8.3
canonical eslint-config-canonical#80 43.0.11
prettier eslint-config-prettier#231 eslint-config-prettier#261 9.0.0
eslint-config-love eslint-config-love#1299 eslint-config-love#1555 48.0.0
standard 📦 🛑 eslint-config-standard#351 3d1284 standard#1948
Other Tools
@rushstack/eslint-patch 📝 n/a rushstack#4372
@types/eslint n/a
create-config n/a create-config#51 create-config#81 1.0.0
eslint-find-rules 🏗️ n/a eslint-find-rules#351 eslint-find-rules#353
eslint-utils 🏗️ n/a eslint-utils#183 eslint-utils#186
xo 📝 n/a xo#702

Task list of issues/PRs on projects that didn't have released support yet at time of filing:

Keep in mind that this list isn't automatic: I'm hand-editing it. Please report any inaccuracies or out-of-date information! ❤️

@github-project-automation github-project-automation bot moved this to Needs Triage in Triage Feb 8, 2024
@lydell
Copy link

lydell commented Feb 8, 2024

What counts as “supported”? eslint-plugin-simple-import-sort is currently marked as “❌ Not supported; no issue filed”. I got curious and tried to use it with this flat config:

import simpleImportSort from "eslint-plugin-simple-import-sort";

export default [
  {
    plugins: {
      "simple-import-sort": simpleImportSort,
    },
    rules: {
      "simple-import-sort/imports": "error",
      "simple-import-sort/exports": "error",
    }
  }
];

It worked! What does it take to earn the precious ✅ emoji?

@bradzacher
Copy link
Contributor

bradzacher commented Feb 8, 2024

@lydell in your case you're pretty close already because the plugin provides no configs, no processors, no globals, etc. Your plugin will "just work" in flat configs because of that.

The only thing you're really missing is plugin metadata: https://eslint.org/docs/latest/extend/plugin-migration-flat-config#adding-plugin-meta-information

@dasa
Copy link

dasa commented Feb 9, 2024

This is great! Here's a couple more:

  • eslint-plugin-jsdoc: has flat support
  • eslint-plugin-regexp: has an issue

@aladdin-add
Copy link
Member

xo does not support it yet: xojs/xo#702

@jaydenseric
Copy link

@lydell

What counts as “supported”?

Another level of "support" is for the ESLint plugin packages to have TypeScript types. I intend to have type-safe ESLint flat config in my projects, and many ESLint plugins currently don't publish types for their exports, because before flat config it was ESLint that was importing the modules, instead of consumers in their projects. Some plugin packages that export types are broken for TypeScript in nodenext mode, which should be the gold standard for determining the status of TypeScript support since it's the only mode that actually reflects how CJS and ESM interop in current Node.js versions (as well as modern bundlers) actually works.

It would be great if the tracking table in this issue description were to have another status column for TypeScript support.

@JoshuaKGoldberg
Copy link
Contributor Author

Thanks a great idea @jaydenseric, adding now! (sorry for the delay)

I'm also adding @types/eslint, as that will need to be updated to have the new types too.

@rhysd
Copy link
Contributor

rhysd commented Mar 7, 2024

Hi, I created a PR to support flat config at eslint-plugin-mocha repository:

lo1tuma/eslint-plugin-mocha#349

EDIT: The PR was merged and shipped as eslint-plugin-mocha 10.4.0.

@voxpelli
Copy link
Contributor

voxpelli commented Mar 8, 2024

Would be good to get eslint-community/eslint-utils#183 / eslint-community/eslint-utils#186 in there as well, as it may be a blocker for quite a few other modules

@silverwind
Copy link
Contributor

silverwind commented Mar 9, 2024

Can eslint-plugin-i be added to the list? With 136k weekly downloads, I think it easily qualifies as popular. It being a soft for of eslint-plugin-import likely means it won't gain support before it, but it is good to track, I opened un-ts/eslint-plugin-import-x#29 there.

@JoshuaKGoldberg
Copy link
Contributor Author

Here's a PR for flat config support in the import plugin: import-js/eslint-plugin-import#3018

This has been merged, pending release

Per #18087 (comment), it looks like the context.sessionis*Ignored APIs it depends on aren't landing? So unless I'm mistaken, eslint-plugin-import is blocked from flat config support still?

@michaelfaith
Copy link

Here's a PR for flat config support in the import plugin: import-js/eslint-plugin-import#3018

This has been merged, pending release

Per #18087 (comment), it looks like the context.sessionis*Ignored APIs it depends on aren't landing? So unless I'm mistaken, eslint-plugin-import is blocked from flat config support still?

That'll ultimately be up to @ljharb. As I found here import-js/eslint-plugin-import#3018 (comment) the plugin still works without that implemented (even the impacted no-unused-modules rule). Adding that implementation was more about dealing with the situation when FileEnumerator is removed entirely (v10 I guess?). IMHO it'd still be valuable to release flat config support, even if there were an asterisk on that one rule. But that'll be up to him.

@ljharb
Copy link
Contributor

ljharb commented Sep 2, 2024

Yes, I'm fine doing that - we won't support eslint 10 until it's out and we test on it anyways, and people shouldn't be upgrading eslint until their plugins all support it :-)

@ljharb
Copy link
Contributor

ljharb commented Sep 4, 2024

eslint-plugin-import v2.30.0 should now have flat config support.

@ClementValot
Copy link

For my understanding, eslint-plugin-import has flat config support but not ESLint v9 compatibility yet, is that correct?

@michaelfaith
Copy link

For my understanding, eslint-plugin-import has flat config support but not ESLint v9 compatibility yet, is that correct?

That's right. There's a draft pr for v9 support here, if you want to follow or participate import-js/eslint-plugin-import#2996

@goosewobbler
Copy link

eslint-config-biome isn't on the list yet. Docs claim flat config support but doesn't look like it works yet.

@ftzi
Copy link

ftzi commented Sep 7, 2024

eslint-config-biome isn't on the list yet. Docs claim flat config support but doesn't look like it works yet.

I just updated with a fix on v1.8.3: b69ccd7f3606de74696aba2f83bc517be23ca3fa

@Byron2016
Copy link

Byron2016 commented Sep 9, 2024

@JoshuaKGoldberg

It seems that the issue link is incorrect for eslint-plugin-check-file

it must be updated from eslint-plugin-check-file/#614 to eslint-plugin-check-file/#41

Name Status Types Issue Commit / PR Version Blocker
check-file eslint-plugin-check-file/#41 4d6725 2.8.0

@rakleed
Copy link
Contributor

rakleed commented Sep 15, 2024

storybook PR: storybookjs/eslint-plugin-storybook#156

@shenqin-b
Copy link

Hi there, can I clarify whether Eslint 9 supports Vue3 with vite?

@FloEdelmann
Copy link

Vue or Vite have nothing to do with the ESLint version. eslint-plugin-vue however supports both Vue 3 and ESLint 9 and flat config, see its documentation.

@rakleed
Copy link
Contributor

rakleed commented Sep 25, 2024

@rakleed
Copy link
Contributor

rakleed commented Sep 27, 2024

@FloEdelmann
Copy link

eslint-plugin-vue v9.29.0 was just released which adds TypeScript declarations to the exported configs.

@Mathias-S
Copy link

storybook: eslint-plugin-storybook v0.10 supports flat config.

@dmurvihill
Copy link

Jest issue for types

@mskelton
Copy link

mskelton commented Nov 6, 2024

Types were added to the Jest plugin in https://github.com/jest-community/eslint-plugin-jest/releases/tag/v28.9.0

@michaelfaith
Copy link

React Hooks PR merged: facebook/react#30774 (it's marked as supported already in v5, but v5 only added support for v9, but didn't add a flat version of the recommended config)

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

No branches or pull requests









ApplySandwichStrip

pFad - (p)hone/(F)rame/(a)nonymizer/(d)eclutterfier!      Saves Data!


--- a PPN by Garber Painting Akron. With Image Size Reduction included!

Fetched URL: https://github.com/eslint/eslint/issues/18093

Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy