Общий tsconfig.json и относительные пути

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

{
  "compilerOptions": {
    "module": "esnext",
    "target": "es5",
    "lib": ["es5", "dom"],
    "jsx": "react",
    "outDir": "build/dist"
  },
  "include": ["./src/**/*.ts", "./src/**/*.tsx"]
}

Мы публикуем этот файл как общий npm-модуль, например my-build-config, а затем используем extends в каждом проекте:

{
   "extends": "./node_modules/my-build-config/tsconfig.json"
}

Проблема здесь в том, что все пути в общей конфигурации относятся к местоположению файла. Например. он попытается включить файлы ".ts" не из текущего проекта, а внутри my-build-config. Например, вместо ./src/index.ts ищет ./node_modules/my-build-config/src/index.ts.

Есть ли способ поделиться расположением файлов, чтобы они не повторялись в 10+ пакетах? Возможно, что-то похожее на то, что Jest делает со свойством rootDir.


person just-boris    schedule 28.08.2018    source источник


Ответы (2)


Если вы знаете, что my-build-config всегда будет устанавливаться в node_modules/my-build-config относительно каждого проекта без символических ссылок, вы можете просто добавить ../../ к каждому затрагиваемому пути.

Или используйте другой инструмент, чтобы скопировать tsconfig.json во все проекты, например Braid (раскрытие информации: Я автор Braid).

person Matt McCutchen    schedule 28.08.2018
comment
Я попробовал это, работает хорошо на данный момент. Спасибо за идею! - person just-boris; 29.08.2018

Другой вариант — опубликовать ваш tsconfig.json как пакет npm.

См., например, https://github.com/sindresorhus/tsconfig

person Vlad Holubiev    schedule 11.12.2020