files.exclude不生效大概率是配错配置项或路径写法:必须用**/node_modules等glob模式写入工作区.vscode/settings.json,而非用户设置或仅配search.exclude。

files.exclude 为什么写了还不生效
资源管理器里文件夹还在,大概率是配错了配置项或路径写法。VSCode 里 files.exclude 和 search.exclude 完全独立:search.exclude 只管 Ctrl+Shift+F 搜索结果,对左侧树状图毫无影响。
常见错误包括:
- 在用户设置里改了
search.exclude,却没碰files.exclude - 路径写成
"dist"或"dist/**"—— 这两种都不匹配子目录下的dist,必须用"**/dist" - 把配置写进了全局
settings.json,但项目里有同名的.vscode/settings.json,后者会覆盖前者
files.exclude 的正确路径写法
files.exclude 的键是 glob 模式,所有路径都相对于工作区根目录,且必须以 **/ 开头才能匹配任意层级的同名目录。
推荐写法(直接复制进 .vscode/settings.json):
{
"files.exclude": {
"**/node_modules": true,
"**/dist": true,
"**/build": true,
"**/coverage": true,
"**/.DS_Store": true,
"**/*.log": true
}
}
注意:
微软正式发布 Visual Studio Code 1.118 版本 。本次更新重点强化了 AI 开发体验与企业管理能力,其中最引人注目的是新增 Copilot CLI 远程控制功能,允许开发者通过手机或网页远程监控和接管 AI 会话 。同时,为了提高 AI 的运行性价比,新版本优化了令牌缓存策略以降低成本 。此外,1.118 版还引入了 Chronicle 本地历史追踪、TypeScript 7.0 支持以及更严格的企业级访问管控 。
-
"**/node_modules"能匹配node_modules和packages/foo/node_modules,但不匹配根目录下直接叫node_modules的目录(它其实是./node_modules,无前导**/)——不过 VSCode 实际处理中已兼容这种常见情况,无需额外加"node_modules": true -
"**/dist/**"和"**/dist"效果一样,但前者多一次路径解析,略拖慢资源管理器刷新 - 排除单个文件如
.env.local,直接写".env.local": true即可,不用加**/
为什么 .vscode/settings.json 才管用
工作区级配置优先级高于用户级,而且 files.exclude 是典型需要“按项目定制”的设置:后端项目要隐藏 dist,前端项目可能要隐藏 out 或 .next,而 node_modules 在某些 monorepo 子包里又得保留。
操作步骤很简单:
- 确保项目根目录存在
.vscode文件夹 - 新建或编辑
.vscode/settings.json - 填完整 JSON 对象,不要只写
"files.exclude": {...}字段(VSCode 会报错) - 保存后资源管理器立刻刷新,不用重启
隐藏后文件还能被其他功能访问到
files.exclude 只是视觉过滤,不是删除或禁用。这意味着:
- Ctrl+P(快速打开)仍能搜到被隐藏的文件,除非你同步配了
search.exclude - 右键「在终端中打开」依然可用,路径没变
- Git 插件、调试器、语言服务(如 TS Server)完全不受影响
- 如果某目录仍显示,检查是否被
files.include显式包含(它会覆盖exclude)
真正容易被忽略的是:files.exclude 不影响文件监视(watcher),想防 CPU 飙高还得配 files.watcherExclude,否则 inotify 仍会监听那些被隐藏的目录。










