vs code 中 node_modules 和 .git 被扫描导致卡顿,需在工作区 .vscode/settings.json 中配置 files.exclude 排除;search.exclude 仅影响搜索,files.exclude 才控制资源管理器、文件跳转及语言服务索引;.gitignore 无法替代该配置。

VS Code 里 node_modules 和 .git 被压缩进工作区怎么办
VS Code 默认会把整个文件夹(包括 node_modules、.git、yarn.lock 等)纳入资源管理器和搜索范围,不是“压缩”,是它真正在扫描——结果就是卡顿、搜索慢、侧边栏膨胀。这不是 bug,是默认行为。
解决思路很直接:告诉 VS Code 哪些目录根本不用管。
- 打开工作区根目录下的
.vscode/settings.json(没有就新建) - 加这一段:
{ "files.exclude": { "**/node_modules": true, "**/.git": true, "**/dist": true, "**/build": true, "**/*.log": true } } - 如果用的是多根工作区,这个配置要放在工作区的
.code-workspace文件里,而不是用户全局设置中
search.exclude 和 files.exclude 有什么区别
两个都管“隐藏”,但作用域不同:前者只影响搜索(Ctrl+Shift+F),后者还影响资源管理器显示、文件跳转(Ctrl+P)、甚至部分扩展的行为(比如 ESLint 或 Prettier 的路径解析)。
常见误操作是只配了 search.exclude,结果资源管理器还是满屏 node_modules,以为没生效。
-
files.exclude是基础防线,必须配 -
search.exclude可以更激进,比如加上"**/coverage": true,避免搜测试报告干扰 - 注意语法:
"**/xxx"表示递归匹配所有层级的 xxx 目录;"xxx"只匹配项目根下的 xxx
用 gitignore 能代替 VS Code 排除吗
不能。VS Code 不读 .gitignore 来决定是否显示文件——除非你装了插件(比如 GitLens),但它也只是视觉灰掉,并不真正排除搜索或语言服务索引。
语言服务器(如 TypeScript Server)仍会尝试解析 node_modules 下的类型声明,导致内存暴涨、CPU 占满。这时候光靠 .gitignore 毫无作用。
- 务必手动配
files.exclude,这是唯一能阻止 VS Code 加载这些目录的方式 - TypeScript 项目建议额外加
"typescript.preferences.includePackageJsonAutoImports": "auto",减少对node_modules的主动探测 - 如果用了 pnpm,
node_modules是硬链接结构,VS Code 更容易卡,此时files.exclude尤其关键
重启 VS Code 后还是卡?检查这三处
配完不生效,大概率是缓存或配置位置错了。
- 确认改的是当前工作区的
.vscode/settings.json,不是用户级的settings.json(路径通常在~/.config/Code/User/settings.json) - 关闭所有窗口,再用
code .重新打开项目目录(不要从最近打开里点) - 按
Ctrl+Shift+P输入Developer: Toggle Developer Tools,看 Console 有没有ENOSPC或大量watcher错误——说明文件监听器超限,得加files.watcherExclude
复杂项目里,files.watcherExclude 往往比 files.exclude 还重要,尤其在 WSL 或 Docker Desktop 环境下,inotify 限制极低,漏配这个,改个文件都反应不过来。










