files.exclude规则在团队中失效,是因为该配置必须写在项目根目录的.vscode/settings.json中并提交至Git,否则仅存于个人用户设置里无法共享;且需通过“打开文件夹”方式加载工作区,路径须用**/开头的glob语法严格匹配。

为什么直接改 files.exclude 在团队里会失效
因为用户级设置(全局)会被工作区设置覆盖,而很多人误把规则写在自己的用户 settings.json 里,同事拉代码根本看不到。真正能同步的只有项目根目录下的 .vscode/settings.json,且必须被 Git 跟踪。
常见错误现象:files.exclude 规则写了但别人打开项目仍显示 node_modules 或 .env.local —— 很可能是因为没提交 .vscode/settings.json,或 VS Code 没以该目录为工作区打开。
- 确认
.vscode/settings.json已加入 Git:运行git status看是否在未跟踪列表中 - 检查打开方式:必须通过「文件 > 打开文件夹…」选中项目根目录,不能只打开某个子文件或用「最近打开」跳进去
- 验证生效位置:按
Ctrl+,搜索files.exclude,右侧应显示「Workspace」图标,不是「User」或「Remote」
files.exclude 的路径写法必须严格匹配 glob 规则
它不是正则,也不是 shell 路径;所有模式都相对于工作区根目录,且不支持绝对路径、~ 或环境变量。写错一个字符,轻则无效,重则整个资源管理器变空。
-
"node_modules": true→ 只隐藏根目录下的node_modules,子目录里的不动 -
"**/node_modules": true→ 递归隐藏所有层级的node_modules,但注意:它也会匹配packages/foo/node_modules -
"**/.env.local": true→ 正确隐藏所有位置的.env.local;写成".env.local": true只匹配根目录 -
"**/.*": true会隐藏所有以点开头的文件/文件夹(如.git、.DS_Store),但慎用——可能误藏.vscode自身 - 含空格路径如
my folder,直接写"my folder": true,不要加引号或转义
别和 search.exclude 搞混,它们控制完全不同的地方
files.exclude 控制左侧资源管理器是否显示;search.exclude 只影响 Ctrl+Shift+F 全局搜索时扫哪些目录。两者默认值会继承,但修改互不影响。
- 想让同事在侧边栏彻底看不到
dist?必须配files.exclude - 只想搜代码时跳过
node_modules?优先改search.exclude,避免误删侧边栏内容 - 临时排除搜索路径?用搜索框右上角的「files to exclude」输入框填
node_modules/**更安全,不污染配置 - 某些插件(如 GitLens、ESLint)会主动读取被
files.exclude隐藏的文件,导致「左侧看不见,但 GitLens 提交历史里还列着」——这不是 bug,是设计如此
工作区 vs 多根工作区:.code-workspace 里怎么配
如果项目是多模块结构(比如前后端放不同文件夹),用的是 .code-workspace 文件而非单文件夹,则 files.exclude 必须写在该文件的顶层 settings 字段下,不能塞进某个 folders 里。
示例 myproject.code-workspace:
{
"folders": [
{ "path": "frontend" },
{ "path": "backend" }
],
"settings": {
"files.exclude": {
"**/node_modules": true,
"**/dist": true,
"**/.DS_Store": true
}
}
}
- 这种写法对所有
folders下的文件统一生效 - 若在某个子文件夹里单独建了
.vscode/settings.json,它的files.exclude会覆盖.code-workspace的同名设置 - 改完
.code-workspace后需执行「Developer: Reload Window」,不用重启整个 VS Code
最易被忽略的一点:VS Code 不会自动把 .vscode/settings.json 里的 files.exclude 同步到远程开发容器或 WSL 中——如果团队有人用 Remote-SSH 或 Dev Containers,得额外在对应环境里也配一份,或者改用 .code-workspace 统一兜底。


















