tsconfig.json中"include": ["src"]与"src/**/*"的区别?
tsconfig.json中"include": ["src"]与"include": ["src/**/*"]的差异
两者的核心差异在于递归匹配的范围:
"include": ["src"]:仅匹配src目录下直接存在的文件,不会递归匹配src的子目录及其内部文件。比如src/index.ts会被包含,但src/utils/helper.ts这类子目录里的文件不会被纳入编译范围。"include": ["src/**/*"]:通过**/*这个glob通配符,会递归匹配src目录下所有层级的文件——不管是根目录的文件,还是嵌套多层子目录里的文件,都会被包含进来。
你在自己仓库里没发现区别,大概率是因为你的项目文件都直接放在src根目录下,没有创建子目录来分类文件。这种情况下两种写法的作用范围完全重合,自然看不出差异。但如果后续项目新增子目录并在里面添加代码,前者就会漏掉这些子目录里的文件,后者则能正常识别。
另外补充一点:如果你的tsconfig.json里还配置了files字段,或者通过extends继承了其他包含递归匹配的配置,也可能导致两种写法表现一致,但这属于特殊场景。
内容的提问来源于stack exchange,提问作者bvandercar
相关产品推荐
相关产品推荐

