Расширение файла tsconfig.json, похоже, ничего не расширяет

У меня есть проект, из которого мне нужно построить два разных продукта. Скажи, что у меня есть

./src/advanced
./src/basic

Весь код написан на машинописном языке, поэтому мне нужно скомпилировать его с помощью tsc

Из-за этого я создал 3 файла tsconfig.

tsconfig-base.json

{
  "compilerOptions": {
    "module": "commonjs",
    "declaration": true,
    "noImplicitAny": false,
    "removeComments": true,
    "emitDecoratorMetadata": true,
    "experimentalDecorators": true,
    "target": "es6",
    "sourceMap": true,
    "outDir": "./dist",
    "baseUrl": "./src",
    "lib": ["es2018", "dom", "dom", "dom.iterable", "es6"],
    "importHelpers": true,
  },
  "exclude": ["node_modules", "**/*.spec.ts","dist"]

Теперь, чтобы создать продукт basic, который у меня есть

tsconfig-basic.json

{
  "extends": "./tsconfig-base.json",
  "compilerOptions": {
    "noEmitHelpers": true
  },
  "files": [
     "basic/main.ts"
  ]
}

И я компилирую следующим образом

$> tsc -p ./tsconfig-basic.json

Теперь у меня 2 проблемы

1) Файл basic/main.ts не найден, он ищет в ./basic/main.ts, а должен был быть ./src/basic/main.ts. Почему baseUrl не добавлено?

2) Если (1) исправлено, скомпилированные файлы не записываются в ./dist. Почему здесь не используется "outDir": "./dist из базового файла? Когда я добавляю outDir в tsconfig-basic.json, он работает как положено

В любом случае, похоже, что расширение здесь не работает или работает не так, как я ожидаю. Любое предложение, как улучшить мою настройку?


person Jeanluca Scaljeri    schedule 11.10.2019    source источник


Ответы (2)


1) baseUrl предназначен только для использования с упаковщиками, такими как webpack. См. обсуждение на странице TypeScript/10866.


2) Это, к сожалению, по дизайну. См. проблему TypeScript/29172.

Цитата Уэсли Вигам (сотрудник Microsoft):
Параметры компилятора на основе пути (outDir, outFile, rootDir, include, files) разрешаются из файла конфигурации, в котором они находятся)

Вам нужно будет повторить outDir для каждого имеющегося у вас tsconfig.json файла.

person a1300    schedule 11.10.2019

Однако есть хитрость. Если вы создадите символическую ссылку на базовый файл Tsconfig из соответствующего каталога и расширите версию с символической ссылкой, а не оригинал, все пути будут разрешены в соответствии с вашими ожиданиями.

person Archibald    schedule 10.03.2020