新建了 src/features 目录,写了两个月代码,直到有人改错字段名才发现这段代码从没被 tsc 检查过。include 里还是 src/* 的写法。碰到这种情况,我一般先确认改动有没有真的生效。
原因不复杂,include 的通配符按段匹配,一个星号不跨目录层级。目录多出一层之后文件压根没进编译范围,编辑器靠自动引入还能识别,命令行 tsc 完全看不到。
「tsconfig include 漏目录」相关的日志我一般连着看前后五分钟,单看一条报错经常判断不出是哪一步失败。别只看报错的最后一行,往上看几行,真正的起因通常在上面。
npx tsc --noEmit --listFiles | grep features | head // tsconfig.json "include": ["src/**/*.ts", "src/**/*.tsx"]
同类问题如果隔一段时间又出现,多半是某个定时任务或重启流程把改动冲掉了。把这次用到的命令存进笔记,比记住结论有用,换个环境还能照着走。
具体做法是,把 include 改成 src/**/* 覆盖所有层级;确认 exclude 里没有误伤新目录;用 listFiles 核对目标文件确实在列表里;CI 里加一条编译文件数下限 少了就报警。
最后用这个标准收尾,listFiles 里能看到 features 下的文件 新目录第一次跑就报出几处旧问题。
