microsoft / microsoft/TypeScript

Auto-import prioritizes files alphabetically before index.ts inside a folder, ignoring the barrel

Offen
#64,034 3 Kommentare 1 Reaktion 3 zugewiesene Personen Auf GitHub ansehen

@RyanCavanaugh arbeitet bereits daran.

Seit 26.8.2026.

  • #64035 von @copilot-swe-agent — offen
Needs More Info
Vorherrschende Sprache
Go
Sterne
111k
Forks
14.3k
Ø Merge
2 T. 4 Std.
Gemergte PRs (30 T.)
132

Beschreibung

### 🔎 Search Terms

auto-import index label:"Domain: LS: Auto-import"

### 🕗 Version & Regression Information

This changed between versions 6.0.3 and 7.0.2

VSCode version: 1.134.0
Windows 11

### ⏯ Playground Link

https://github.com/alexicum/autoimport-index-ignore/blob/main/src/index.ts

### 💻 Code

**Project structure:**

```text
src/
components/
Product/
index.ts // re‑exports from product.tsx and ProductList.tsx
product.tsx // exports Product (lowercase 'p')
ProductList.tsx // exports ProductList (uppercase 'P')
utils/
double/
double.ts // exports double (lowercase 'd')
index.ts // re‑exports from double.ts
triple/
index.ts // re‑exports from triple.ts
triple.ts // exports triple (lowercase 't')
index.ts // root file where imports are tested
```

**Code example** (src/index.ts):

```TypeScript
// Product is exported from `product.tsx` (lowercase 'p', ASCII 112)
// Since 'p' > 'i' (105), index.ts comes alphabetically first,
// so the import is correctly suggested from `./components/Product`
import { Product } from "./components/Product/index.js";

// ProductList is exported from `ProductList.tsx` (uppercase 'P', ASCII 80)
// Since 'P' < 'i' (105), ProductList.tsx comes before index.ts,
// so the language service suggests direct path `./components/Product/ProductList.js`
import { ProductList } from "./components/Product/ProductList.js";

// double is exported from `double.ts` (lowercase 'd', ASCII 100)
// Since 'd' < 'i' (105), double.ts comes before index.ts → direct path `./utils/double/double.js`
import { double } from "./utils/double/double.js";

// triple is exported from `triple.ts` (lowercase 't', ASCII 116)
// Since 't' > 'i' (105), index.ts comes first → barrel path `./utils/triple/index.js`
import { triple } from "./utils/triple/index.js";

console.log(Product, ProductList, double, triple);
```

### 🙁 Actual behavior

In the example above, the auto‑import suggestions (or the inserted imports) depend on the alphabetical order of the file names relative to index.ts.
When a file name starts with a character that has a lower ASCII code than i, the language service chooses that file instead of the barrel.
When the character has a higher code, the barrel is chosen.
This behaviour may be unexpected, since `index.ts` is typically intended to serve as the public entry point for the folder.

### 🙂 Expected behavior

Regardless of alphabetical order, if index.(ts/tsx) exists and exports the symbol, the auto‑import should always suggest the folder import (e.g., './components/Product' or './utils/double') rather than a direct path to an internal file.

### Additional information about the issue

In 6.0.3 barrel files are always ignored.

The code example for this issue is located in the same repository as the example for:
["Auto-import ignores barrel (index.ts) when the imported folder name is a prefix of the importing file name" (#64029)](https://github.com/microsoft/TypeScript/issues/64029)

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.

Bewertung

Dieses Issue wurde noch nicht bewertet.

Neue Issues direkt in Ihr Postfach

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