tsconfig.json的{cts,mts}类glob模式失效,是Bug还是预期行为?
关于tsconfig.json中glob模式大括号扩展的问题解答
这是TypeScript的预期行为,并非操作有误,核心原因在于不同工具使用的glob解析逻辑存在差异:
- TypeScript解析
tsconfig.json里的include/exclude字段时,用的是自研的glob实现,不支持大括号扩展语法(也就是{cts,mts}这种一次性匹配多个后缀的写法)。它会把{cts,mts}当作文件名的固定部分去查找,自然找不到对应文件,所以用./src/**/*.{cts,mts}的tsconfig.a.json无法检测到目标文件。 - 而ESLint等构建工具通常依赖第三方glob库,这些库支持完整的Bash风格glob语法,包括大括号扩展,因此能正确识别
./src/**/*.{cts,mts}这种批量匹配模式。
当你把模式拆分为./src/**/*.cts和./src/**/*.mts时,完全符合TypeScript支持的glob规则,所以tsconfig.b.json可以正常检测到文件。
目前TypeScript官方没有计划在tsconfig的glob解析中支持大括号扩展,所以如果要覆盖这类文件,只能分开写多个匹配模式。
内容的提问来源于stack exchange,提问作者Habib Osaye
相关产品推荐
相关产品推荐

