microsoft / microsoft/TypeScript

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

Abierto
#64,034 3 comentarios 1 reacción 3 asignados Ver en GitHub

@RyanCavanaugh ya está trabajando en esto.

Desde el 26/8/2026.

  • #64035 de @copilot-swe-agent — abierto
Needs More Info
Lenguaje dominante
Go
Estrellas
111k
Forks
14.3k
Merge medio
2 d 4 h
PR fusionados (30 d)
132

Descripción

### 🔎 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)

Guía de contribución

Abrir la guía de contribución

Primeros pasos

  1. Lee el issue completo y luego la guía de contribución del proyecto.
  2. Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
  3. Haz un fork del repositorio y trabaja en una rama.
  4. Abre un pull request que haga referencia al número del issue.

Evaluación

Este issue todavía no se ha evaluado.

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.