【问题标题】:typescript tsconfig.json include exclude not workingtypescript tsconfig.json 包括排除不工作
【发布时间】:2018-03-27 01:24:17
【问题描述】:

我有一个网络项目

我有文件夹

src/app/shared/models
src/app/shared/services
src/app/shared/types

每一个都是子文件夹,里面有文件夹或文件,我想排除这些文件夹,所以我尝试了:

  "include": [
    "src/**/*"
  ],
  "exclude": [
    "node_modules",
    "**/*.spec.ts",
    "src/app/shared/**/*"
  ]

它不工作,即使"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/**/*"
  ]
}

谢谢

【问题讨论】:

    标签: typescript glob tsconfig


    【解决方案1】:

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

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

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

    includeexclude 属性采用类似 glob 的文件模式列表。支持的全局通配符是:

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

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

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

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

    【讨论】:

    • 你能根据这个解释粘贴一下看起来不错的配置吗?
    • 为什么当有人在包含文件中导入排除文件中的值时 ts 不会抛出错误或至少给出警告?
    猜你喜欢
    • 1970-01-01
    • 2018-11-08
    • 2017-10-22
    • 2014-07-20
    • 2013-03-22
    • 1970-01-01
    • 2017-06-01
    • 2020-09-21
    • 2018-01-21
    相关资源
    最近更新 更多