microsoft / microsoft/TypeScript

importModuleSpecifier "shortest" does not choose shortest result among multiple matching paths aliases

Offen
#63,320 2 Kommentare 0 Reaktionen 0 zugewiesene Personen Auf GitHub ansehen

Dieses Issue hat noch niemand übernommen.

Awaiting More Feedback Suggestion
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

Beitragsleitfaden öffnen

Erste Schritte

  1. Lies das ganze Issue und danach den Beitragsleitfaden des Projekts.
  2. Schreib ins Issue, dass du es übernimmst — das erspart doppelte Arbeit.
  3. Forke das Repository und arbeite in einem Branch.
  4. Ö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

Neue Issues direkt in Ihr Postfach

Eine kurze Übersicht über anfängerfreundliche GitHub-Issues.