Вы можете сделать это, указав базовый URL и (в более сложных случаях), используя отображение пути .
Если у вас есть tsconfig.json
вproject_root
, вы можете достичь желаемой стратегии импорта, определив
"compilerOptions": {
"baseUrl": "."
}
Это работает, если имя пакета всегда соответствует имени папки подпроекта.
Если это не так 'В этом случае вы можете использовать paths
:
"compilerOptions": {
"baseUrl": ".", // This must be specified if "paths" is.
"paths": {
"A": ["packageA"],
"B": ["packageB"],
"A/*": ["packageA/*"],
"B/*": ["packageB/*"]
}
}
. Это позволит машинописи корректно разрешать типы импорта во время компиляции.Однако пути импорта не разрешены в скомпилированном javascript, что означает, что необходимо сообщить следующему шагу в вашем конвейере (обычно это такой пакет, как webpack), как также разрешить этот импорт.В частности, для веб-пакетов это можно сделать, указав псевдоним в конфигурации веб-пакета:
resolve: {
alias: {
A: path.resolve(__dirname, 'packageA/'),
B: path.resolve(__dirname, 'packageB/')
}
}
Если вы хотите выполнить файлы машинописного текста напрямую, ts-node это самый простой способ сделать это, так как он уже будет знать об измененных путях из конфигурации машинописи, если вы используете tsconfig-paths - в этом случае вам просто нужно выполнить файл, используя node-ts -r tsconfig-paths/register packageA/index.ts
(node-ts
и tsconfig-paths
должны быть установлены через npm)