У меня есть такая же проблема, как и у вас, но она решается с помощью tsconfig.json
в каждом проекте.
У меня есть код внешнего и внутреннего кода и общий код между ними. Он имеет следующую структуру каталогов.
/my-project
/common
*.ts
/frontend
*.ts
tsconfig.json
/backend
/src
*.ts
tsconfig.json
Вот это backend/tsconfig.json
:
...
"compilerOptions": {
...
"outDir": "./dist",
...
}
...
Компилятор Typescript автоматически определяет самый большой каталог общих предков, следовательно, rootDir
, из всех *.ts
файлов в соответствии с вашим tsconfig.json
. Вам даже не нужно явно указывать rootDir
, потому что компилятор перемещается по иерархии до my-project
и устанавливает его в качестве корня.
Импорт внутри backend/some.ts
выглядит следующим образом:
import { Foo } from '../../common/some-shared';
Из-за автоматического rootDir
вычисления компилятора, единственное замечание заключается в том, что вывод в каталоге backend/dist
выглядит следующим образом:
/dist
/common
*.js
/backend
/src
*.js
Я еще не понял, как избавиться от уродливой структуры dist/backend/src
без использования копирования или связывания с Webpack и т. Д. До компиляции. Из того, что я искал, (пока) невозможно сделать это только с помощью компилятора Typescript. Может быть, у кого-то есть подсказки ... Надеюсь, что это помогло.