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
Update import/export specifier sort on rename #57975
Comments
@RyanCavanaugh I'm interested in tackling this. Is this something I can jump in on? |
@abarghoud according to the repository CONTRIBUTING any issue with the label "Help wanted" is allowed to be worked by anyone. Also, is important to avoid Issue Claiming. Please feel free to start working in this, you don't have to ask permission as it's labelled with "Help wanted" |
@TulioPintoNeto Thanks for pointing it out, I did not know about the issue claiming thing. I forgot to read the contribution guide π€¦ββοΈ |
Context@abarghoud I was checking about the way we sort when adding an import (the suggestion on this issue) Seems like we are sorting by the folder structure, not by the variable name, while Eslint rule is sorting by variable name. TypeScript import (please note that we have an error in line 2 due to Screen.Recording.2024-03-29.at.21.17.08.movNext steps?With that in mind:
I think it's pertinent, so I'm also bringing this: Eslint team chose not to auto-fix the order of imports in I mean, by implementing this behaviour (of reording lines) we can even increase the amount of conflicts with Eslint, as the order of lines could be defined differently for each project on the eslint config. So I'm advocating against it based on the use cases given |
@TulioPintoNeto I support the notion of retaining TypeScript's team's design for auto-import ordering. This is especially pertinent considering the availability of multiple ESLint rules that can be configured to alter the sorting method. I believe the bug that needs fixing is the failure to reorder file names when renaming them. However, I'm concerned that it may not be possible because I think IDEs handle it rather than TypeScript itself. Wdyt? |
Sorry, I was supposed to mention @andrewbranch. But to answer you, @abarghoud :
But the main thing I'm calling out here is that reordering lines when renaming will not always give a consistent output with Eslint (which is the desired according to the use cases provided in the description of this issue). This happens due to the fact that each codebase can set up its own rules for ordering imports. |
There are TS Server preferences that control the sort order, and a lot of utilities under |
π Search Terms
organizeImports import sort rename
β Viability Checklist
β Suggestion
Renaming an exported function that is imported as one of many named imports can make that list of import specifiers become unsorted. When we execute auto-imports, we try to detect how/whether an existing list of named imports is currently sorted and insert the new specifier in the correct spot. We could do something similar when updating an import or export specifier during a Rename command.
π Motivating Example
We have an eslint rule that enforces import sort order. I just renamed a function
impliedNodeFormatForEmit
togetImpliedNodeFormatForEmit
, and afterwards I had to go fix the eslint rule failure in 6 different files. It would be nice not to have to do that.π» Use Cases
The text was updated successfully, but these errors were encountered: