microsoft / microsoft/TypeScript
importModuleSpecifier "shortest" does not choose shortest result among multiple matching paths aliases
Dieses Issue hat noch niemand übernommen.
- Vorherrschende Sprache
- Go
- Sterne
- 111k
- Forks
- 14.3k
- Ø Merge
- 2 T. 4 Std.
- Gemergte PRs (30 T.)
- 132
Beschreibung
🔎 Search Terms
importModuleSpecifier shortest paths multiple aliases, auto import paths overlapping alias, tryGetModuleNameFromPaths shortest
🕗 Version & Regression Information
- This is the behavior in every version I tried, and I reviewed the FAQ for entries about auto-import and paths
⏯ Playground Link
N/A — this is a language service auto-import behavior that requires a multi-file project with jsconfig/tsconfig paths
💻 Code
// jsconfig.json
{
"compilerOptions": {
"paths": {
"@@/*": ["./*"],
"@/*": ["./src/*"]
}
}
}
// src/services/foo.js
export function foo() {}
// src/index.js — trigger auto-import for `foo`
🙁 Actual behavior
Auto-import suggests @@/src/services/foo. The importModuleSpecifier: "shortest" preference does not influence the choice between two matching paths aliases. tryGetModuleNameFromPaths returns on the first matching key in iteration order without comparing alternatives.
🙂 Expected behavior
With importModuleSpecifier set to "shortest", auto-import should compare all matching aliases and suggest @/services/foo since it is shorter than @@/src/services/foo.
Additional information about the issue
Workaround is to reorder paths entries so the more specific alias appears first, relying on object key insertion order. This is fragile and undocumented.
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 beim erwähnten tryGetModuleNameFromPaths-Einstiegspunkt und reproduziere den Fall des automatischen Imports über mehrere Dateien mit der jsconfig/tsconfig-Pfadekonfiguration. Verfolge, wie passende Aliase ausgewählt werden, und überprüfe anschließend, dass die Präferenz für den kürzesten Alias den kürzeren Alias ergibt, statt von der Reihenfolge der Objektschlüssel abzuhängen.
Vom Indexierungsmodell aus dem Issue-Text verfasst.
Bewertung
- Tech-Stack
- javascript, typescript
- Bereich
- developer-experience, tooling
- Issue-Typ
- Bug
- Schwierigkeit
- 4/5
- Geschätzter Aufwand
- 3-5 Tage
- Aktivitätsstatus
- Ruhig
- Klarheit
- Klar beschrieben
- Anfängerfreundlichkeit
- 52/100