Зачем нужно exclude=[node_modules], когда у меня есть только include=[src] в моем tsconfig.json?

Я хочу скомпилировать только папку «src». поэтому я делаю include:["src"], а node_modules находятся только за пределами src, тогда зачем мне их исключать, например, exclude: ["node_modules"], как это предлагается многими сайтами?

например они также предложили включить src, а затем исключить и node_modules — https://www.javatpoint.com/typescript-compilation-context

{  
    "compilerOptions": {  
        "module": "system",  
        "noImplicitAny": true,  
        "removeComments": true,  
        "preserveConstEnums": true,  
        "outFile": "../../built/local/tsc.js",  
        "sourceMap": true  
    },  
    "include": [  
        "src/**/*"  
    ],  
    "exclude": [  
        "node_modules",  
        "**/*.spec.ts"  
    ]  
}  

Мне не нужно писать никаких исключений в моем tsconfig.json, верно?


person Smriti Mittal    schedule 27.04.2020    source источник


Ответы (2)


Во-первых, вам не нужно указывать node_modules в параметре exclude, потому что TypeScript автоматически исключает его по умолчанию.

Если exclude отключен, TypeScript будет включать эти каталоги как исключающие.

- node_modules
- bower_components
- jspm_packages
- the files <outDir> option specifies

Опция exclude используется только для фильтрации опции include. Таким образом, вы можете указать его только при использовании опции include.

Ознакомьтесь с более подробной информацией на примере примера здесь.

https://medium.com/javascript-in-plain-english/typescript-configuration-options-tsconfig-json-561d4a2ad4b

person manato    schedule 10.12.2020

Вы неправильно это поняли. Значения в массиве include представляют папки/файлы, которые будут включены в программу. Затем exclude указывает, какие папки/файлы следует исключить из включенных папок/файлов.

Другими словами, если вы пишете include: ['src'], а затем exclude: ['*.spec.ts'], вы исключаете все файлы *.spec.ts, которые были найдены в папке src.

Вы должны исключить node_modules, даже если папка находится за пределами папки src. Это связано с тем, что эти пакеты импортируются (с использованием import) внутри файлов (также известных как модули), которые находятся во включенной папке src. Если вы этого не сделаете, TypeScript также проверит импортированные пакеты, а это не то, что вам нужно.

Поскольку рекомендуется всегда исключать node_modules, TypeScript решил добавить его в качестве значения по умолчанию. Поэтому вы можете опустить всю спецификацию exclude, если хотите исключить только node_modules.

Поскольку вы также хотите исключить файлы *.spec.ts (не по умолчанию), вам нужно указать это так, как вы это сделали.

В массив добавлено больше папок в качестве значений по умолчанию ["node_modules", "bower_components", "jspm_packages"]

Подробнее об этой теме можно прочитать в документации.

person Michal Moravik    schedule 29.07.2021