Похоже, комбинация baseUrl
& paths
в tsconfig.json
может помочь вам, взгляните на (очень информативную) документацию здесь .
Они предоставляютпример, который очень похож на ваш случай:
Использование «путей» также позволяет создавать более сложные сопоставления, включая несколько резервных местоположений .Рассмотрим конфигурацию проекта, в которой только некоторые модули доступны в одном месте, а остальные - в другом.Шаг сборки собрал бы их всех в одном месте.Макет проекта может выглядеть следующим образом:
projectRoot
├── folder1
│ ├── file1.ts (imports 'folder1/file2' and 'folder2/file3')
│ └── file2.ts
├── generated
│ ├── folder1
│ └── folder2
│ └── file3.ts
└── tsconfig.json
Соответствующий файл tsconfig.json будет выглядеть так:
{
"compilerOptions": {
"baseUrl": ".",
"paths": {
"*": [
"*",
"generated/*"
]
}
}
}
Это говорит компилятору о любом импорте модуля, который соответствует шаблону "* "(т. е. все значения) для просмотра в двух местах: baseUrl
и generated/
import ‘folder2/file3’
- pattern ‘*’ is matched and wildcard captures the whole module name
- try first substitution in the list: ‘*’ -> folder2/file3
- result of substitution is non-relative name - combine it with baseUrl -> projectRoot/folder2/file3.ts.
- File does not exist, move to the second substitution
- second substitution ‘generated/*’ -> generated/folder2/file3
- result of substitution is non-relative name - combine it with baseUrl -> projectRoot/generated/folder2/file3.ts.
- File exists. Done
В этом случае вместо generated/*
вы можете использовать my_modules
вместо:
{
"compilerOptions": {
"baseUrl": ".",
"paths": {
"*": [
"my_modules/*"
"*",
]
}
}
}