microsoft / microsoft/TypeScript
`libReplacement: true` lookup folder should be configurable (via `typeRoots` ?)
Nadie ha tomado este issue todavía.
- Lenguaje dominante
- Go
- Estrellas
- 111k
- Forks
- 14.3k
- Merge medio
- 2 d 4 h
- PR fusionados (30 d)
- 132
Descripción
🔎 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.
Guía de contribución
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Línea de trabajo
Comienza reproduciendo la configuración con libReplacement, typeRoots y --traceResolution; después, sigue cómo tsc resuelve @typescript/lib-dom. Compara la búsqueda con el comportamiento de typeRoots y define una ruta de configuración que funcione para carpetas hermanas; se considerará terminado cuando la ubicación personalizada se resuelva de forma fiable y la cobertura de regresión lo verifique.
Escrito por el modelo de indexación a partir del texto del issue.
Evaluación
- Stack tecnológico
- typescript
- Área
- compilers
- Tipo de issue
- Nueva funcionalidad
- Dificultad
- 4/5
- Tiempo estimado
- 3-5 días
- Estado de actividad
- Tranquilo
- Claridad
- Bastante claro
- Aptitud para principiantes
- 45/100