microsoft / microsoft/TypeScript
"Organize Imports" should adjust specifiers based on preferences
Dieses Issue hat noch niemand übernommen.
- Vorherrschende Sprache
- Go
- Sterne
- 111k
- Forks
- 14.4k
- Ø Merge
- 1 T. 19 Std.
- Gemergte PRs (30 T.)
- 117
Beschreibung
🔍 Search Terms
"sort imports", "organize imports"
✅ Viability Checklist
- This wouldn't be a breaking change in existing TypeScript/JavaScript code
- This wouldn't change the runtime behavior of existing JavaScript code
- This could be implemented without emitting different JS based on the types of the expressions
- This isn't a runtime feature (e.g. library functionality, non-ECMAScript syntax with JavaScript output, new syntax sugar for JS, etc.)
- This isn't a request to add a new utility type: https://github.com/microsoft/TypeScript/wiki/No-New-Utility-Types
- This feature would agree with the rest of our Design Goals: https://github.com/Microsoft/TypeScript/wiki/TypeScript-Design-Goals
⭐ Suggestion
I have a feature request for the language server / it's commands.
So I have a large project, and I have not changed tsconfig.json since the beginning of the time.
Now I "discovered" what baseUrl does, what paths does, and that there is an option in vscode - ```
"typescript.preferences.importModuleSpecifier": "non-relative", // | "project-relative" | "relative" | "shortest"`.
So I have a file, deep inside the source - which imports from a file, close to the root.
Before I added 'baseUrl' - it did
import { bar } from "../../../../../foo/bar";`
After adding "baseUrl": "./src/" in tsconfig - this could be written as
import { bar } from "foo/bar";`
bar();
If I delete the import, and go to the bar() to fix the import issue - it provides me quick fix -
Add import from "foo/bar"if I have specified"typescript.preferences.importModuleSpecifier": "shortest"in settings., orAdd import from "../../../../../foo/bar"if I have specified"typescript.preferences.importModuleSpecifier": "relative"in settings.
I really don't like those endless "../../../../../" so I would like to fix them. The only "tool" I have for now - is just to delete the import, and resolve those imports manually - so it gives me the best import paths given my settings and my tsconfig's "baseUrl" or "paths".
This is tedious. And it doesn't work where I have used import * as foo from [..].
In VSCode - there is a command Organize imports (I think this comes not from TypeScript?) (In my optionion - wasted effort. since it doesn't organize them, it just sorts them, but this is besides the point (it does not come from TypeScript))
But TypeScript does come with a command "Typescript: Sort imports"!
What I would want - after executing the command, it would not only sort the imports, but also - change the paths for those imports matching my preferences of settings.json "typescript.preferences.importModuleSpecifier" + tsconfig.json "baseUrl" and "paths".
Or it could be a new command - Typescript: Organize imports? (maybe not..)
📃 Motivating Example
This feature would help automatically shorten imports / make the satisfy project setting for a file.
💻 Use Cases
- What do you want to use this for?
To automatically organize imports - What shortcomings exist with current approaches?
You have to manually go over each import and edit them one by one - What workarounds are you using in the meantime?
Deleting the import and resolving them using quick fix.
Beitragsleitfaden
Erste Schritte
- Lies das ganze Issue und danach den Beitragsleitfaden des Projekts.
- Schreib ins Issue, dass du es übernimmst — das erspart doppelte Arbeit.
- Forke das Repository und arbeite in einem Branch.
- Öffne einen Pull Request, der die Issue-Nummer nennt.
Rechercherichtung
Beginne mit dem Befehl TypeScript: Sort imports und dem im Issue beschriebenen Quick-Fix-Verhalten des Language Servers. Verfolge, wie typescript.preferences.importModuleSpecifier, tsconfig baseUrl und paths die generierten Importspezifizierer beeinflussen. Als abgeschlossen gilt die Arbeit, wenn Imports sortiert und geeignete Pfade entsprechend diesen Einstellungen konsistent angepasst werden.
Vom Indexierungsmodell aus dem Issue-Text verfasst.
Bewertung
- Tech-Stack
- typescript, vscode
- Bereich
- developer-experience, tooling
- Issue-Typ
- Feature
- Schwierigkeit
- 4/5
- Geschätzter Aufwand
- 3-5 Tage
- Aktivitätsstatus
- Veraltet
- Klarheit
- Größtenteils klar
- Anfängerfreundlichkeit
- 35/100