如何排除以' .spec.ts'结尾的文件在tsconfig.json中

时间:2018-01-25 17:53:54

标签: javascript json angular typescript

我试图在tsconfig.json中包含一些文件,但它包含我不想包含的文件。 (我在任何地方都看到了搜索语法中使用的星号,但我不确定这个语法是什么,以及在哪里可以了解更多信息。)来自repo(带有未编译的源代码)我试图包含文件结尾于.ts,但以.spec.ts结尾的内容除外。

以下内容包含我想要的文件,但未成功排除我不想要的文件。

  "include": ["node_modules/dashboard/**/*.ts"],
  "exclude": ["node_modules/dashboard/**/*.spec.ts"],

如何排除这些文件?

编辑:首先使用**/**.ts**/**.spec.ts。这是不正确的,但现在我已经纠正了它,我遇到了同样的问题。

3 个答案:

答案 0 :(得分:11)

TypeScript handbook has a good write up on tsconfig file

手册中的例子是:

"exclude": [
    "node_modules",
    "**/*.spec.ts"
]

请注意,**用于任何文件夹,*(单个星号)用于文件名通配符。

您通常不需要更具体,因为我想您会想要排除"所有规范文件"而不仅仅是特定子目录中的文件。

何时工作

有些情况下,这不会起作用。

  1. 如果您还在include和exclude部分中包含该文件 - include wins
  2. 如果要将排除的文件导入包含的文件中。
  3. 如果您使用的是旧版本的编译器(早期版本的tsconfig不允许使用通配符)
  4. 您正在使用tsc app.ts进行编译(或传递其他参数) - 执行此操作时将忽略您的tsconfig

答案 1 :(得分:1)

您可以使用

class SubjectResource extends ResourceSupport { private final Subject subject; public SubjectResource(Subject subject) { String username = subject.getTeacher().getUsername(); this.subject = subject; this.add(new Link(subject.uri, "subject-uri")); this.add(linkTo(SubjectRestController.class, username).withRel("subjects")); this.add(linkTo( methodOn(SubjectRestController.class, username).readSubject(username, subject.getId())).withSelfRel()); } public Subject getSubject() { return subject; } }

答案 2 :(得分:1)

更改为:

"include": ["node_modules/dashboard/**/*.ts"],
"exclude": ["node_modules/dashboard/**/*.spec.ts"],

将解决问题。来自documentation

  

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

这是**的第二次使用,导致包含过多。