Как использовать несколько файлов tsconfig?

Я использую Visual Studio Code и имею довольно общую структуру проекта:

├── client/
│   ├── tsconfig.json
├── shared/
├── server/
│   ├── tsconfig.json
├── project.json

Два файла tsconfig имеют разные настройки (например, в под client/ целевые ES5, то под server/ нацелены на ES6).

Проблема заключается в том, что я хочу, чтобы общий каталог был включен в оба проекта. Я не могу сделать это с помощью tsconfig, потому что параметр exclude не позволит мне включить папку, которая находится в более высоком каталоге, чем tsconfig.json, и используя files, мне приходится постоянно хранить список файлов до поскольку он не поддерживает глобусы.

Обратите внимание, что я могу скомпилировать все, добавив общую папку в tsc, я хочу, чтобы IDE Visual Studio Code распознал общий код для intellisense и т.д.

Единственная возможность ждать filesGlob?

Ответ 2

Я ответил на это здесь: ответ расширения tsconfig

Суть ответа:

Вы можете сделать это, расширив свой базовый файл tsconfig.json:

расширение tsconfig

только не исключайте каталоги в базовом файле tsconfig.json, и typScript должен иметь возможность разрешать ваши наборы для вас (знайте, что это так, используя node_modules/@types или модуль typings)

Например:

конфиги /base.json:

{
  "compilerOptions": {
    "noImplicitAny": true,
    "strictNullChecks": true
  }
}

tsconfig.json:

{
  "extends": "./configs/base",
  "files": [
    "main.ts",
    "supplemental.ts"
  ]
}

tsconfig.nostrictnull.json:

{
   "extends": "./tsconfig",
   "compilerOptions": {
     "strictNullChecks": false
   }
}

Ответ 3

Единственная опция для ожидания файловGlob?

Лучший вариант:

  • Просто используйте единственный tsconfig.json И только пакет (используя что-то вроде webpack) файлы в client (webpack возьмет ссылки на общие).

Это рабочий процесс, который я использую здесь https://github.com/alm-tools/alm 🌹 (единственный tsconfig.json https://github.com/alm-tools/alm/blob/master/src/tsconfig.json)

Этот рабочий процесс также рассматривается в документах дизайна alm: https://basarat.gitbooks.io/alm/content/contributing/

Ответ 4

Используйте один tsconfig.json для рута. А затем расширьте его для каждого проекта (бэкэнд tsconfig.server.json, tsconfig.webpack.json интерфейс tsconfig.webpack.json).

  • Корневой tsconfig.json include: ['src'] чтобы гарантировать, что все файлы проверены на типизацию в IDE.
  • tsconfig.server.json exclude: ['src/app'] файлы tsconfig.server.json интерфейса
  • tsconfig.webpack.json: tsconfig.webpack.json exclude: ['src/backend'] файлы бэкэнда

Больше

Пример урока

Ответ 5

как другой вариант связать комманд npm со следующим запуском

{
   'start': '...',
   'buildFront': 'tsc -p tsconfig.someName.josn'
}