eslint-community / eslint-utils

Utilities for ESLint plugins and custom rules.
https://eslint-community.github.io/eslint-utils
MIT License
18 stars 7 forks source link

Drop older ESLint versions from `peerDependencies` #233

Closed voxpelli closed 2 weeks ago

voxpelli commented 1 month ago

Companion issue to #232 – I think it makes sense to simultaneously drop support for a lot of the older ESLint versions.

We could investigate how this would impact the ecosystem that uses @eslint-community/eslint-utils / eslint-utils – which peer dependencies that those plugins have and whether they would be forced into major releases as well or whether we would simply align with what they are already using.

Considering that ESLint 8 will reach End-Of-Life in less than a month I would say that we should drop everything older than ESLint 8 and maybe even ESLint 8 itself.

If ESLint themselves are not prepared to keep ESLint 8 up to date, I'm not sure if we should go the extra mile to keep the plugin ecosystem up to date for ESLint 8?

(Maybe we could discuss this at an @eslint-community/core-team level as well?)

voxpelli commented 1 month ago

To get all of the dependents of @eslint-community/eslint-utils I ran this command:

npx list-dependents list --field engines @eslint-community/eslint-utils --include-historic --field peerDependencies

I piped the output of that into this command to sort it and format it to markdown:

npx list-dependents-cli filter --sort-download --field engines.node --field peerDependencies.eslint --min-downloads=1000 --pretty-print --markdown

It shows that the outlier for this issue and #232 are mainly these plugins:

But I think it also shows that the majority of the users have dropped ESLint versions older than 8 and Node.js versions older than 18.

If we want to be very kind maintainers we could open an issue in each of the mentioned plugins, asking if they are okay with also bumping.

Modules

Name Dependents Downloads engines.node peerDependencies.eslint
eslint 424118 162066540 ^18.18.0 \|\| ^20.9.0 \|\| >=21.1.0 -
@typescript-eslint/utils 742 158983699 ^18.18.0 \|\| ^20.9.0 \|\| >=21.1.0 ^8.57.0 \|\| ^9.0.0
eslint-plugin-vue 47028 11711575 ^14.17.0 \|\| >=16.0.0 ^6.2.0 \|\| ^7.0.0 \|\| ^8.0.0 \|\| ^9.0.0
eslint-plugin-unicorn 7871 11663513 >=18.18 >=8.56.0
eslint-plugin-n 8503 11423923 ^18.18.0 \|\| ^20.9.0 \|\| >=21.1.0 >=8.23.0
eslint-plugin-es-x 59 6505473 ^14.18.0 \|\| >=16.0.0 >=8
eslint-plugin-regexp 526 1512731 ^18 \|\| >=20 >=8.44.0
eslint-plugin-jsonc 1360 1463434 ^12.22.0 \|\| ^14.17.0 \|\| >=16.0.0 >=6.0.0
eslint-plugin-svelte 1150 1276737 ^14.17.0 \|\| >=16.0.0 ^7.0.0 \|\| ^8.0.0-0 \|\| ^9.0.0-0
@intlify/unplugin-vue-i18n 87 1164381 >= 18 -
eslint-plugin-eslint-plugin 1886 833547 ^18.18.0 \|\| ^20.9.0 \|\| >=21.1.0 >=8.23.0
eslint-plugin-astro 112 406782 ^18.18.0 \|\| ^20.9.0 \|\| >=21.1.0 >=8.57.0
eslint-plugin-json-schema-validator 84 285335 ^14.18.0 \|\| >=16.0.0 >=6.0.0
eslint-plugin-vue-scoped-css 70 272719 ^12.22 \|\| ^14.17 \|\| >=16 >=5.0.0
eslint-plugin-css 18 52568 ^12.22.0 \|\| ^14.17.0 \|\| >=16.0.0 >=7.0.0
eslint-plugin-node-dependencies 55 14052 >=14.17.0 >=6.0.0
eslint-plugin-lodash-template 21 6497 >=18.0.0 >=8.0.0
eslint-plugin-address 0 1444 - >=8.0.0
eslint-plugin-storm-software 0 1261 - 9.5.0

Intersection of versions

engines.node: ^18.18.0 || ^20.9.0 || >=21.1.0 peerDependencies.eslint: 9.5.0

Lowest included versions

engines.node: 12.22.0 (eslint-plugin-jsonc, eslint-plugin-vue-scoped-css, eslint-plugin-css) peerDependencies.eslint: 5.0.0 (eslint-plugin-vue-scoped-css)

Generated using list-dependents-cli.

voxpelli commented 1 month ago

@ota-meshi Looks like you are a maintainer or co-maintainer of all of the five modules I mentioned as the outliers above – what's your take on bumping ESLint and/or Node versions ranges for those?

ota-meshi commented 1 month ago

I think it's a good idea to remove old versions from supported versions to make maintenance easier.

Some of the plugins I maintain also support old ESLint versions because I haven't had a major update in a long time. When I major update them next time, I'll drop support for the old versions.

MichaelDeBoey commented 2 weeks ago

Closed by #243

github-actions[bot] commented 2 weeks ago

:tada: This issue has been resolved in version 5.0.0-alpha.1 :tada:

The release is available on:

Your semantic-release bot :package::rocket: