microsoft / microsoft/TypeScript
`libReplacement: true` lookup folder should be configurable (via `typeRoots` ?)
Nessuno ha ancora preso questa issue.
- Lingua principale
- Go
- Stelle
- 111k
- Fork
- 14.3k
- Merge medio
- 2g 4h
- PR unite (30g)
- 132
Descrizione
### 🔎 Search Terms
When `libReplacement: true` is used, for example
```
"libReplacement": true,
"lib": ["dom", "esnext"],
```
It is currently not possible to instruct the TS compiler to look for `@typescript/lib-dom/` in a custom folder, which makes it impossible to leverage `libReplacement: true` in setups where the folder does not reside in the parent chain (real-world scenario in the Chromium repository). For example adding something as follows has no effect.
```
"typeRoots": [
"./some/sibling/folder/node_modules/@typescript", <-- Does not work
"./some/sibling/folder/node_modules/@typescript/lib-dom" <-- Does not work either
],
```
Pasting `--traceResolution` output for reference.
```
======== Resolving module '@typescript/lib-dom' from '/usr/local/home/workspace/chromium/src/out/gchrome/gen/ui/webui/resources/tools/eslint/__lib_node_modules_lookup_lib.dom.d.ts__.ts'. ========
Explicitly specified module resolution kind: 'Node10'.
Loading module '@typescript/lib-dom' from 'node_modules' folder, target file types: TypeScript, Declaration.
Searching all ancestor node_modules directories for preferred extensions: TypeScript, Declaration.
Directory '/usr/local/home/workspace/chromium/src/out/gchrome/gen/ui/webui/resources/tools/eslint/node_modules' does not exist, skipping all lookups in it.
Scoped package detected, looking in 'typescript__lib-dom'
Directory '/usr/local/home/workspace/chromium/src/out/gchrome/gen/ui/webui/resources/tools/node_modules' does not exist, skipping all lookups in it.
Scoped package detected, looking in 'typescript__lib-dom'
Directory '/usr/local/home/workspace/chromium/src/out/gchrome/gen/ui/webui/resources/node_modules' does not exist, skipping all lookups in it.
Scoped package detected, looking in 'typescript__lib-dom'
Directory '/usr/local/home/workspace/chromium/src/out/gchrome/gen/ui/webui/node_modules' does not exist, skipping all lookups in it.
Scoped package detected, looking in 'typescript__lib-dom'
Directory '/usr/local/home/workspace/chromium/src/out/gchrome/gen/ui/node_modules' does not exist, skipping all lookups in it.
Scoped package detected, looking in 'typescript__lib-dom'
Directory '/usr/local/home/workspace/chromium/src/out/gchrome/gen/node_modules' does not exist, skipping all lookups in it.
Scoped package detected, looking in 'typescript__lib-dom'
Directory '/usr/local/home/workspace/chromium/src/out/gchrome/node_modules' does not exist, skipping all lookups in it.
Scoped package detected, looking in 'typescript__lib-dom'
Directory '/usr/local/home/workspace/chromium/src/out/node_modules' does not exist, skipping all lookups in it.
Scoped package detected, looking in 'typescript__lib-dom'
Directory '/usr/local/home/workspace/chromium/src/node_modules' does not exist, skipping all lookups in it.
Scoped package detected, looking in 'typescript__lib-dom'
Directory '/usr/local/home/workspace/chromium/node_modules' does not exist, skipping all lookups in it.
Scoped package detected, looking in 'typescript__lib-dom'
Directory '/usr/local/home/workspace/node_modules' does not exist, skipping all lookups in it.
Scoped package detected, looking in 'typescript__lib-dom'
Directory '/usr/local/home/node_modules' does not exist, skipping all lookups in it.
Scoped package detected, looking in 'typescript__lib-dom'
Directory '/usr/local/home/node_modules' does not exist, skipping all lookups in it.
Scoped package detected, looking in 'typescript__lib-dom'
Directory '/usr/local/node_modules' does not exist, skipping all lookups in it.
Scoped package detected, looking in 'typescript__lib-dom'
Directory '/usr/local/node_modules' does not exist, skipping all lookups in it.
Scoped package detected, looking in 'typescript__lib-dom'
Directory '/usr/node_modules' does not exist, skipping all lookups in it.
Scoped package detected, looking in 'typescript__lib-dom'
Directory '/node_modules' does not exist, skipping all lookups in it.
Scoped package detected, looking in 'typescript__lib-dom'
Loading module '@typescript/lib-dom' from 'node_modules' folder, target file types: JavaScript.
Searching all ancestor node_modules directories for fallback extensions: JavaScript.
Directory '/usr/local/home/workspace/chromium/src/out/gchrome/gen/ui/webui/resources/tools/eslint/node_modules' does not exist, skipping all lookups in it.
Directory '/usr/local/home/workspace/chromium/src/out/gchrome/gen/ui/webui/resources/tools/node_modules' does not exist, skipping all lookups in it.
Directory '/usr/local/home/workspace/chromium/src/out/gchrome/gen/ui/webui/resources/node_modules' does not exist, skipping all lookups in it.
Directory '/usr/local/home/workspace/chromium/src/out/gchrome/gen/ui/webui/node_modules' does not exist, skipping all lookups in it.
Directory '/usr/local/home/workspace/chromium/src/out/gchrome/gen/ui/node_modules' does not exist, skipping all lookups in it.
Directory '/usr/local/home/workspace/chromium/src/out/gchrome/gen/node_modules' does not exist, skipping all lookups in it.
Directory '/usr/local/home/workspace/chromium/src/out/gchrome/node_modules' does not exist, skipping all lookups in it.
Directory '/usr/local/home/workspace/chromium/src/out/node_modules' does not exist, skipping all lookups in it.
Directory '/usr/local/home/workspace/chromium/src/node_modules' does not exist, skipping all lookups in it.
Directory '/usr/local/home/workspace/chromium/node_modules' does not exist, skipping all lookups in it.
Directory '/usr/local/home/workspace/node_modules' does not exist, skipping all lookups in it.
Directory '/usr/local/home/node_modules' does not exist, skipping all lookups in it.
Directory '/usr/local/home/node_modules' does not exist, skipping all lookups in it.
Directory '/usr/local/node_modules' does not exist, skipping all lookups in it.
Directory '/usr/local/node_modules' does not exist, skipping all lookups in it.
Directory '/usr/node_modules' does not exist, skipping all lookups in it.
Directory '/node_modules' does not exist, skipping all lookups in it.
======== Module name '@typescript/lib-dom' was not resolved. ========
```
Or if `typeRoots` is not the right way, there should be some way to customize where to look.
Let me know if you think a minimal repro is needed. Skipping for now as the above setup seems easy to reproduce.
### 🕗 Version & Regression Information
Reproducing on v 6.0.2. Did not try previous versions.
### 🙁 Actual behavior
No way exists to tell `tsc` where to locate the `@typescript/lib-dom/` folder.
### 🙂 Expected behavior
There should be a way tell `tsc` where to locate the `@typescript/lib-dom/` folder, similar to how this is done with `typeRoots` for types listed in `types`.
Guida per i contributori
Apri la guida per i contributori
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Direzione di ricerca
Inizia riproducendo la configurazione con libReplacement, typeRoots e --traceResolution, quindi traccia il modo in cui tsc risolve @typescript/lib-dom. Confronta la ricerca con il comportamento di typeRoots e definisci un percorso di configurazione che funzioni per cartelle sorelle; il lavoro è completato quando la posizione personalizzata viene risolta in modo affidabile e la copertura di regressione lo verifica.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Valutazione
- Stack tecnologico
- typescript
- Ambito
- compilers
- Tipo di issue
- Funzionalità
- Difficoltà
- 4/5
- Tempo stimato
- 3-5 giorni
- Stato di attività
- Tranquilla
- Chiarezza
- Abbastanza chiara
- Idoneità per principianti
- 45/100