必须用Ignored Files and Folders全局排除node_modules,而非右键Excluded;后者仅修改.iml文件、不清理索引,仍导致跳转、搜索、CPU异常;正确写法为node_modules;(分号结尾),并务必Invalidate Caches and Restart。

WebStorm 必须用 Ignored Files and Folders 全局排除,不是右键 Excluded
右键 Mark Directory as → Excluded 对 node_modules 基本无效——它只改 .idea/{project}.iml,不清理已有索引,Ctrl+Click 仍能跳进依赖,搜索照常命中,CPU 持续飙升。真正起作用的是全局的 Ignored Files and Folders 设置,它让 WebStorm 在扫描阶段就跳过匹配路径,不建索引、不解析、不参与任何语义功能。
- 路径必须写为
node_modules(不带斜杠、不加通配符、不写node_modules/) - 多个条目用分号分隔,例如:
node_modules;dist;.next;build - 修改后必须执行
File → Invalidate Caches and Restart → Invalidate and Restart,否则旧缓存继续生效 - 验证方式:重启后
node_modules在 Project 面板中呈浅灰色、不可展开;右键无Open in Terminal等选项
为什么 .gitignore 里的 node_modules 完全没用
.gitignore 只控制 Git 行为,WebStorm 的索引系统完全不读它。你写了 node_modules/,IDE 依然会扫描几万文件,状态栏持续显示 Scanning files in node_modules/,补全变慢、跳转错乱、内存暴涨。这不是 Bug,是设计如此——Git 忽略 ≠ IDE 忽略。
- 想让 WebStorm 不索引某目录,只能走
Ignored Files and Folders或项目级Excluded(但后者风险高) - 部署上传是另一套系统,
.gitignore和Ignored Files and Folders都不影响上传行为 - 符号链接(如
pnpm link或yarn link创建的软链)会被 WebStorm 默认绕过,即使目标在Ignored Files and Folders里也照样索引
排除单个文件只能靠名称匹配,不能右键
WebStorm 不允许对单个文件执行 Mark as Excluded,这是硬限制。想排除 config.local.js 或 .env.local 这类敏感文件,只能靠 Ignored Files and Folders 的名称规则:
- 添加精确名称:
config.local.js - 或用通配符:
*.local.js、.env.local(注意:*.LOG和*.log大小写敏感,需分开写) - 路径匹配不生效,只认文件名或后缀,不支持
src/config.local.js这种写法 - 生成类文件如
coverage/lcov-report/*.html、mock-data/*.json是否排除,取决于用途:机器生成的必须加,人工维护的建议保留 Schema 校验
Deployment 上传和本地索引是两套独立系统
在 Ignored Files and Folders 里加了 dist,只让 WebStorm 不索引它,但 Tools → Deployment → Upload 时照传不误。要阻止上传,必须单独配置 Deployment 的排除规则:
- 打开
Tools → Deployment → Configuration → Options - 在
Exclude items by name输入框填入模式,例如:dist/;.env.local;*.log(注意斜杠表示目录,逗号分隔) - 这个设置和本地索引完全无关,也不会影响 Git 或
.gitignore - 如果项目用了 Vite / Next.js / Nuxt,
Excluded目录还可能干扰resolve.alias或optimizeDeps.include的路径识别,优先用Ignored Files and Folders
最常被忽略的一点:排除动作本身不触发索引重建,Invalidate Caches and Restart 是强制清空历史缓存的唯一可靠手段。不重启,等于没设。


















