Установить базовый / рабочий каталог компилятора TypeScript - PullRequest
0 голосов
/ 03 июля 2018

Похоже, компилятор TypeScript разрешает файлы относительно расположения файла tsconfig.json.

Есть ли способ указать альтернативный базовый каталог, который будет использоваться для разрешения относительных путей?

Я хочу использовать общий файл tsconfig.json для компиляции нескольких проектов в разных каталогах.

Вот соответствующий вопрос в официальном репозитории TypeScript.

1 Ответ

0 голосов
/ 19 сентября 2018

У меня есть такая же проблема, как и у вас, но она решается с помощью 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. Может быть, у кого-то есть подсказки ... Надеюсь, что это помогло.

...