tsconfig.json - как исключить другой файл tsconfig.json? - PullRequest
0 голосов
/ 09 июля 2019

Я создаю пакет npm и имею структуру папок, подобную приведенной ниже:

project/
  - src/
    - index.tsx
    - package.json
    - config/
      - tsconfig.json
    - copy/
      - tsconfig.json
      - package.json
  - dist/
    - index.js
    - package.json
    - config/
      - tsconfig.json
    - copy/
      - tsconfig.json
      - package.json
  - tsconfig.json
  - package.json

project/ является основной папкой разработки. Это то, что стремится к github.

project/src/ содержит все исходные файлы разработки. Все файлы JavaScript кодируются в Typescript.

project/dist/ - это папка дистрибутива, которая публикуется в npm и представляет собой просто скомпилированную версию project/src/. Файлы .ts и .tsx компилируются в файлы .js / .jsx, а файлы .json просто копируются из project/src/ без изменений.

project/src/config/ и project/dist/config/ содержат файл tsconfig.json по умолчанию, который не используется в этом проекте. Его цель - расширить файлы tsconfig.json в project/src/copy/ и project/dist/copy/. Подробнее об этом ниже.

project/src/copy/ и project/dist/copy/ - это файлы, которые нужно скопировать в корневой каталог пользователя после установки пакета npm (через postinstall ). Это потому, что пакет, который я создаю, по сути является шаблоном, поэтому, как только пользователь установит пакет, в корневой каталог будет включен файл по умолчанию package.json, содержащий все скрипты, хуки, пакеты и т. Д. Для шаблона, а также tsconfig.json файл, который не более чем:

{
  "extends": "./node_modules/myPackage/config/tsconfig.json"
}

Это расширяет файл tsconfig.json в project/dist/config/tsconfig.json.

Причина, по которой я расширяю его вместо простого кодирования содержимого project/dist/config/tsconfig.json, заключается в том, что пользователям просто нужно запустить npm update myPackage, и если файл tsconfig.json изменился, они будут автоматически использовать новый настройки конфигурации.

В противном случае, если я просто скопирую содержимое project/dist/config/tsconfig.json в корневой каталог пользователя, обновленная конфигурация не будет получена, поскольку postinstall не работает для npm update, только npm install.

У меня проблема в том, что я получаю ошибки типа в project/src/copy/tsconfig.json и project/dist/copy/tsconfig.json, потому что путь, который он расширяет, явно не существует.

Я пытался добавить "exclude": ["src/copy/tsconfig.json", "dist/copy/tsconfig.json"] к project/tsconfig.json, однако это не работает. В этих файлах все еще отображаются ошибки типов.

Так как же заставить Typescript не сообщать об ошибках для этих двух конкретных файлов?

EDIT : Это похоже на проблему с VSCode. Если я запускаю tsc в CLI, он не возвращает никаких ошибок (я предполагаю, что tsc не проверяет файлы .json).

...