Sublime Text 在 Monorepo 中卡死或崩溃的根本原因是 index_files 默认策略未过滤嵌套模块路径,导致反复扫描 node_modules、dist 等大目录;应禁用自动索引、显式声明需索引的 src 目录,并关闭 symbol_index 与非必要插件。

Sublime Text 为什么在 Monorepo 里卡死或崩溃
根本原因不是“文件太多”,而是 index_files 默认策略对嵌套模块路径缺乏过滤,导致它反复扫描 node_modules、dist、.git、各子包的 node_modules(比如 packages/a/node_modules)、甚至构建产物目录。这些目录单个就几十万文件,Sublime 的索引线程扛不住,内存暴涨后触发系统杀进程或直接无响应。
禁用自动索引 + 手动指定需索引的路径
别依赖全局 index_files: true。Monorepo 必须收口控制——只让 Sublime 索引你真正编辑的源码目录,其他一律排除。
- 关闭自动索引:
"index_files": false加入Preferences.sublime-settings - 用
project_settings或.sublime-project文件显式声明要索引的路径,例如只索引apps/和packages/*/src:
"settings": {
"index_files": true,
"folder_exclude_patterns": ["node_modules", "dist", "build", ".git"],
"file_exclude_patterns": ["*.log", "*.map"]
},
"folders": [
{
"path": "apps/web",
"follow_symlinks": true
},
{
"path": "packages/core/src",
"follow_symlinks": true
},
{
"path": "packages/ui/src",
"follow_symlinks": true
}
]
注意:folder_exclude_patterns 在项目级生效,但不会递归过滤子文件夹里的同名目录(如 packages/*/node_modules);所以必须把每个需要索引的子模块 src 目录单独列为 folders 条目,而不是只加根目录。
避免 symbol_index 在多模块下误匹配
默认开启的符号索引(symbol_index: true)会跨文件解析 import、export,但在 Monorepo 中,不同包间可能有同名导出(比如多个 utils.ts 都导出 debounce),导致跳转错乱或 CPU 暴涨。
- 关掉全局符号索引:
"symbol_index": false - 仅在当前编辑的子项目中按需启用:右键 →
Index Symbols in Folder,且确保该文件夹不含node_modules - 若用 TypeScript,建议搭配
SublimeLinter-tslint或SublimeLinter-eslint替代部分跳转需求,它们基于语言服务,不依赖 Sublime 原生符号索引
插件冲突是隐性崩溃源
很多插件(尤其是旧版 GitGutter、SideBarEnhancements、EditorConfig)会在每次文件变更时遍历父目录找配置,Monorepo 的深层嵌套结构会让它们反复扫描数百层路径,最终拖垮主线程。
- 禁用非必要插件,尤其带“auto”“watch”“sync”字样的
- 检查插件是否支持
project_exclude_patterns,否则它仍会扫描被 Sublime 排除的路径 - 用
Package Control: Disable Package逐个排查,重点观察console(Ctrl+`)里是否有TimeoutError或RecursionError日志
Monorepo 下最易被忽略的点:Sublime 不区分“工作区根”和“代码逻辑根”。你打开的是仓库根目录,但它默认把整个树当工程——而真实开发只聚焦几个子模块。不手动切分 folders,就等于让编辑器持续做无意义的全量扫描。


















