Исключить титры @types в установленных зависимостях

Можно ли исключить глобальные типы в установленных зависимостях?

Я установил локальную зависимость. Это также скопировало папку node_modules этой зависимости. В этой папке node_modules хранятся установочные титры @types. Эти конфликты с типом @types, установленными для основного проекта.

Например. project-path/node_modules/local-dependency/node_modules/@types/react конфликты с project-path/node_modules/@types/react.

Можно ли заставить машинописный компилятор игнорировать типизацию в этой локальной зависимости?

Ответ 1

Вы пытались использовать пустой массив для опции types?

{
  "compilerOptions": {
    ...,
    "types": []
  }
}

Это отключает автоматическое включение типов.

Смотрите документацию по TypeScript для более подробной информации.

Ответ 2

Вы можете использовать свойства include и exclude в своем tsconfig.json для более тонкого контроля над файлами, которые включает в себя компилятор TypeScript:

http://www.typescriptlang.org/docs/handbook/tsconfig-json.html

Свойства "include" и "exclude" "include" список шаблонов файлов в виде глобуса. Поддерживаемые шаблоны glob:

  • * соответствует нулю или больше символов (исключая разделители каталогов)
  • ? соответствует любому символу (исключая разделители каталогов)
  • **/рекурсивно соответствует любому подкаталогу

Поэтому, возможно, вы могли бы сделать что-то вроде:

{

    ...    

    "exclude": [
        "node_modules"
    ]
}

Или, в зависимости от ваших потребностей, вы можете создать более целенаправленный шаблон glob, который исключает node_modules каталог node_modules из одной зависимости, дающий вам проблемы.

Если у вас есть контроль над модулем local-dependency в вашем примере, лучшим решением будет обновление либо зависимости, либо вашего приложения, чтобы использовать ту же самую версию модуля @types/react, удалить ваши модули npm и сделать свежие npm install. Это должно позволить npm устанавливать единую, общую версию модуля, устраняя любую возможность конфликтов.