必须同时配置 files.exclude 和 search.exclude:前者控制资源管理器隐藏目录,后者控制全局搜索跳过目录;仅配其一会导致侧边栏冗余或搜索卡顿。

直接配 files.exclude 和 search.exclude,别只动一个;否则要么文件还在侧边栏刷屏,要么搜索还是卡在 dist 里打转。
为什么只改 search.exclude 不行?
很多人加了 "search.exclude": { "**/dist": true },发现 Ctrl+Shift+F 是快了,但资源管理器里 dist 文件夹还杵在那儿——因为 search.exclude 只管搜索,不管显示。files.exclude 才是让文件夹从左侧树里“物理消失”的开关。两者独立生效,缺一不可。
-
files.exclude控制资源管理器(左侧文件树)是否渲染该路径 -
search.exclude控制全局搜索(Ctrl+Shift+F)是否扫描该路径 - 插件(如 GitLens、ESLint)可能绕过
files.exclude主动读取文件,所以得靠search.exclude堵住搜索入口
dist、build、out 这类目录怎么写才真正生效?
路径必须用 glob 模式,且以 **/ 开头,否则只匹配根目录下同名项。比如写 "dist": true,子目录里的 packages/foo/dist 完全不受影响。
- ✅ 正确:
"**/dist": true、"**/build": true、"**/out": true - ❌ 错误:
"dist": true(只匹配根级)、"dist/**": true(VS Code 不认这种写法) - ⚠️ 注意:
"**/dist/**": true虽然能隐藏内容,但比"**/dist": true多一层遍历,无必要,还略拖慢资源管理器刷新
应该写在用户设置还是工作区设置里?
优先写进项目根目录的 .vscode/settings.json。用户级设置(全局)会影响所有项目,但不同项目构建产物路径可能不同——比如前端用 dist,后端用 target,硬塞进全局配置反而容易误杀。
- 工作区设置路径:
.vscode/settings.json(项目根目录下) - 完整结构必须是合法 JSON 对象,不能只写一个字段:
{ "files.exclude": { "**/dist": true, "**/build": true }, "search.exclude": { "**/dist": true, "**/build": true, "**/logs": true } } - 保存后资源管理器立刻刷新,不用重启 VS Code
还有哪些常见打包产物要顺手排除?
除了显眼的 dist 类目录,这些也常被忽略但实际干扰极大:
-
"**/node_modules": true—— 必须同时进files.exclude和search.exclude,否则既占侧边栏又拖慢搜索 -
"**/*.log": true—— 日志文件体积大、内容杂,搜关键词时极易命中无关行 -
"**/coverage": true—— 测试覆盖率报告生成的 HTML/JSON,纯查看用,不该参与代码编辑流 -
"**/arch/avr32": true—— 移植项目中废弃的旧平台目录,留着只会增加认知负担
真正难的不是写对一行配置,而是意识到:你每次滚动侧边栏找源码、每次等搜索框转圈,背后都是这些路径在悄悄拖后腿。配完别忘了验证——关掉所有插件再打开资源管理器,看是不是真干净了。


















