打字稿tsconfig.json包括排除不起作用

Zak*_*akk 5 typescript tsconfig

我有一个网络项目

我有文件夹

src/app/shared/models
src/app/shared/services
src/app/shared/types
Run Code Online (Sandbox Code Playgroud)

这些文件夹中的每一个都是其中包含文件夹或文件的子文件夹,我想排除这些文件夹,所以我尝试:

  "include": [
    "src/**/*"
  ],
  "exclude": [
    "node_modules",
    "**/*.spec.ts",
    "src/app/shared/**/*"
  ]
Run Code Online (Sandbox Code Playgroud)

它不起作用,甚至"src/app/shared/*"不起作用,我该怎么办?

我的tsconfig.json现在:

{
  "compilerOptions": {
    "outDir": "./dist/out-tsc",
    "baseUrl": "src",
    "sourceMap": true,
    "declaration": false,
    "moduleResolution": "node",
    "emitDecoratorMetadata": true,
    "experimentalDecorators": true,
    "target": "es5",
    "typeRoots": [
      "node_modules/@types"
    ],
    "lib": [
      "es2015",
      "dom"
    ]
  },
  "include": [
    "src/**/*"
  ],
  "exclude": [
    "node_modules",
    "**/*.spec.ts",
    "src/app/shared/**/*"
  ]
}
Run Code Online (Sandbox Code Playgroud)

谢谢

Ben*_*ent 11

首先要考虑的事情是,如果您决定使用“ exclude”关键字列出文件,为了将它们从编译过程中删除,您还需要排除任何其他文件,这可以通过使用三斜杠指令来排除“ /// <reference path="..." />”或“ import”语句引用排除列表中的文件。

tsconfig.json将文件夹变成“项目”。如果不指定任何“ exclude”或“ files”条目,包含 的文件夹及其tsconfig.json所有子目录中的所有文件都将包含在您的编译中。

tsconfig.json自动包含不嵌入模块解析。如果编译器将某个文件识别为模块导入的目标,则无论它是否在前面的步骤中被排除,该文件都将包含在编译中。

和属性采用类似 globincludeexclude文件模式列表。支持的全局通配符有:

  • *匹配零个或多个字符(不包括目录分隔符)
  • ?匹配任意一个字符(不包括目录分隔符)
  • **/递归匹配任意子目录

使用该files属性时,它需要一个相对或绝对文件路径的列表。

设置“ baseUrl”通知编译器在哪里找到模块。所有具有非相对名称的模块导入都被假定为相对于 baseUrl。

使用“ ”包含的文件include可以使用“ exclude”属性进行过滤。但是,如果您使用“”属性显式包含文件,则files无论“”如何,它们都将始终包含在内exclude

  • 你能根据这个解释粘贴看起来不错的配置吗? (2认同)
  • 当有人在包含文件中导入排除文件中的值时,为什么 ts 不会抛出错误或至少发出警告? (2认同)