-
-
Notifications
You must be signed in to change notification settings - Fork 12
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
The future of this fork/plugin #24
Comments
when i was considering forking the same plugin, i came to the conclusion it makes more sense to diverge than staying in sync. there's a lot of extra logic, architecture, etc that could easily fall away these days IMO. i'd rather you make it independent so you can be set free on it rather than working within constraints of the original plugin just my two cents if you need any help, too, i'd be happy to. i work on a fair amount of things in the eslint ecosystem and was about to do my own fork until i discovered this one! |
Benefits
Downsides
|
eslint-plugin-import has been missing a real update for years. We should take this opportunity to drop all Node.js <= 14 support. |
Yes, we'll rewrite the whole code base into modern JavaScript/TypeScript features. Do you want to join to maintain this project? Next steps:
|
a few things i think could be cleaned up or thrown away too:
i don't believe there's any need for this resolver architecture anymore. feels like an over-complication of things, especially splitting them out into independent packages. i think you should be able to use this plugin and it supports every day resolution out of the box (standard resolution browsers/node-esm use, and node resolution). anything else is an edge case you could support through config, but definitely don't need an extra package for. if we use enhanced-resolve, that itself is configurable for all those cases. doesn't seem to be a reason to have resolvers anymore, just configure enhanced-resolve differently for those edge cases. |
And that's why I'm using I mean the new plugin will be a TypeScript-first plugin. |
Just want to leave my opinion here. I really like the idea of rewriting everything to TS and enhance the project in a good way. Right now I don't feel like that I can over much time 🙁 Another thing: I dislike the plugin-name "i", because it is not clear what "i" means. Is it possible to e.g. publish as |
The idea of Personally, I don't think we should rename to a new brand considering it's already a little bit well known. |
I also hate |
I don't think anyone would use
|
To clarify, eslint-module-utils is a separate package; the repo is a kind of hybrid monorepo. You’re right about the memo parser, that isn’t used. A great many users need the webpack resolver, or use the plugin with ecosystems that don’t use standard node resolution, so just be aware of who’s being excluded if you choose to drop the concept of resolvers. |
i don't believe we need a resolver architecture/plugin system for that nothing is stopping us providing configurable resolution using a single built-in resolver. i think it was an over-engineering of a much simpler thing. enhanced-resolve plus some configuration will achieve everything we need. just my opinion though. sure you believed the opposite when you built it, which is fair enough. each to their own |
I didn’t build it. |
|
I've started the migration at #26 |
Really glad to see someone start fork it, I had really bad experience contribute to the original repo once, and decide never do it again..
Same here. |
Progress: I've successfully removed all |
Do you think I own @eslinter but I don't know how to join @eslint-community, and Although it's too late as @bradzacher said, but we still have the chance. Another interesting thing is that, I own https://github.com/eslinter/eslint-plugin-jsx and the npm package now, so I'll start to adapt @jsx-eslint packages like https://github.com/jsx-eslint/eslint-plugin-react into I really hope @Rel1cx can join in this case. |
doing such good work already 🙏 ill have a read through the PR this weekend if i can on the naming - i do agree it'd be nice if it had a "full" name (rather than the eslint community org would be good to put this into but you're right that the scope is pretty lengthy. even if you don't adopt that name, it may still be worth joining that org on github though (assuming it is "official" and actively managed, and doesn't remove any ownership from you). |
Any chance to have eslint-plugin-module or eslint-plugin-modules? |
@fisker I'll try to contact these two package owners. |
|
Does It should be |
Yes. The users can always use the plugin full name or |
Great rule name! 😄 |
That's why I'd prefer a short package name. |
Progress:
|
@JounQin Although I agree with the choices made in this fork and I don't get why @ljharb doesn't want to add them (I understand the reasoning of BC, but I don't agree with people still using Node v4, especially not for running their linter), I'm not sure if we want to have a fork of a package that's still actively maintained but has different opinions tbh 🤔 I'll talk to the rest of the core @eslint-community team to decide what to do with this case, as normally we're only taking over (widely dependent upon) ESLint-related packages that are either widely dependent upon and/or that are abandoned by the original author or where the original author wants to give it a safer place so it doesn't get abandoned if they're unable to continue maintenance for whatever reason |
fwiw I'm highly likely to do a breaking change in the |
choices are good. if it doesn't make sense to have two in the eslint-community org, maybe that's fair enough. but out in the wild, it'd be nice to see multiple options sometimes, regardless of why they exist. just fwiw. i'm likely to move many repos to this plugin, away from the other, whatever the outcome of the naming and wherever it lives. some will be similar. so maybe the whole eslint-community thing is something for future rather than now (if it becomes depended upon enough). |
It def makes sense to wait until sufficient adoption before moving anything into that org. |
That's the biggest problem, a lot of issues can not be resolved due to this problem
Glad to hear. And I want to clarify, we'll move forward w/wo joining in @eslint-community, and I own @eslinter, I'll migrate
Sorry, but I can't believe it and we've removed the concept of different
That's OK, we have our own org @eslinter. |
did you already start this? i have a branch lying around which does a bunch of it from what i remember if you want any help, ping me when you make the repo and i'll push the branch for you to look at, at least (don't want to take this thread off topic so lets catch up once the repo exists rather than here) |
@JounQin true, because that makes it useless for preact and svelte and vue and styled-components etc users. |
I haven't personally, but I know a great project https://github.com/Rel1cx/eslint-react, that's why I said I really hope @Rel1cx can join us. |
I strongly support you to do a full rewrite of eslint-plugin-import, maybe called eslint-plugin-esm + eslint-plugin-cjs (two separate packages), or eslint-plugin-module (one package). |
@Rel1cx In my view, some rules are universal, some rules are framework specific. For react rules, we can have So in |
You could make an eslint-plugin-jsx but that only makes sense if the rules in it are truly framework-agnostic, and considering that most of the natural framework-agnostic rules have already been migrated to @stylistic/eslint-plugin-jsx, there aren't that many left. Where JSX fits into the ecosystem of front-end languages and frameworks: JS in Vue JS in Solid ... In essence, JSX is just a syntax extension, how to lint TSX here is the same as TS, JS here, it's up to the frameworks, making an eslint-plugin-jsx that doesn't just take care of the correctness of JSX itself, but also has to be configured (or prefixed) to support the behaviour of all the specific frameworks that have used JSX in the past, are using JSX now, and will be in the future is equivalent to making a @typescript-eslint/eslint-plugin but not only for the correctness of TS itself but also configured (or prefixed) to support the behaviour of all the frameworks that use TS, React, Preact, Solid, Vue, etc. Don't think of JSX as anything special, it's basically the same thing as JS and TS. |
Just my two cents, I roughly agree.
|
OK, like @jsx-eslint, I own @eslint-jsx, we can make framework specific plugins at that org. |
Progress:
|
After thinking, I think |
i think that makes sense, since future forks of other plugins could follow the same naming convention too. nice to have some consistency there |
I've published eslint-plugin-import-x as the successor of The whole progress was tough, #26 was unable to continue because I chose to migrate codes instead tests first. But finally I migrated But I haven't removed the In the next step, I'll try to migrate the whole code base into TypeScript. |
$ yarn add -D eslint-plugin-import-x # due to un-ts/eslint-plugin-import-x#24 $ sed -i "s@(:|')import/@\1import-x/@" .eslintrc.cjs @ fe
$ yarn add -D eslint-plugin-import-x # due to un-ts/eslint-plugin-import-x#24 $ git ls-files -z | xargs -0 sed -i "s@(:|'| )import/@\1import-x/@" @ fe
$ yarn remove eslint-plugin-import $ git ls-files -z | xargs -0 sed -i "s@(:|'| )import/@\1import-x/@" @ fe
I'm thinking about maintaining this package as a complete independent plugin from upstream because a lot of issues can not be fixed easily without API changes, see
import-js#1479
import-js#2108
import-js#2111
import-js#2717
It would affect 3rd party resolvers like import-js/eslint-import-resolver-typescript#248
@SukkaW do you want to collaborate here?
The text was updated successfully, but these errors were encountered: