关闭 TypeScript 自动类型检查可显著降低 tsserver CPU 占用,需在 .vscode/settings.json 中禁用自动类型获取、项目诊断,并在 tsconfig.json 中显式配置 include 路径避免扫描 node_modules。

关闭 TypeScript 自动类型检查(tsserver 高 CPU 常因它)
VSCode 内置的 TypeScript 语言服务(tsserver)在大型项目中极易吃满单核 CPU,尤其当你打开 node_modules 或含大量声明文件的 monorepo 时。它默认对工作区所有 .ts/.tsx 文件做全量语义分析,而非按需。
实操建议:
- 在工作区根目录创建
.vscode/settings.json,加入:"typescript.preferences.includePackageJsonAutoImports": "auto",<br>"typescript.preferences.disableAutomaticTypeAcquisition": true,<br>"typescript.tsserver.experimental.enableProjectDiagnostics": false
- 在
tsconfig.json中显式设置"include",**避免通配符如"**/*"覆盖node_modules或构建产物目录 - 如不写 TS,直接禁用 TS 插件:命令面板(
Ctrl+Shift+P)→ 输入Extensions: Disable Extensions in This Workspace→ 搜索并禁用TypeScript and JavaScript Language Features
限制 ESLint / Prettier 的触发范围(eslint.validate 和 prettier.requireConfig 是关键)
ESLint 在保存时扫描整个打开文件、甚至跨文件依赖分析,配合 eslint-plugin-import 或 eslint-plugin-react-hooks 时极易卡顿;Prettier 若未设约束,可能对非 JS/TS 文件(如 .json、.md)也尝试格式化。
实操建议:
- 在
.vscode/settings.json中限定校验语言:"eslint.validate": ["javascript", "typescript", "javascriptreact", "typescriptreact"]
(**不要留空或写["*"]**) - 启用
"prettier.requireConfig": true,确保只有存在.prettierrc或prettier.config.js的子目录才触发格式化 - 若用 ESLint + Prettier 组合,改用
eslint-config-prettier关闭所有与 Prettier 冲突的规则,避免重复解析
禁用非必要扩展,尤其是“全局监听型”插件
很多插件(如 GitLens、Bracket Pair Colorizer、旧版 Auto Rename Tag)会在文件变更时主动扫描全文本、监听磁盘事件或维护大内存索引,VSCode 进程崩溃或响应延迟常源于此。
实操建议:
- 用
Ctrl+Shift+P→Developer: Show Running Extensions查看实际 CPU / 内存占用,重点关注Extension Host下的插件名 - 逐个禁用以下高风险扩展再测试:
GitLens(改用 VSCode 原生 Git 功能)、Path Intellisense(新版 VSCode 已内置路径补全)、Markdown Preview Enhanced(改用原生Ctrl+Shift+V预览) - 把插件安装从“用户级”移到“工作区级”:
Extensions: Install Extension in This Workspace,避免跨项目干扰
调整 VSCode 底层资源策略(files.watcherExclude 和 search.exclude 必设)
VSCode 默认用递归文件监视器(chokidar)跟踪所有子目录变更,一旦项目含 dist/、build/、coverage/ 或大量日志文件,监视器会持续触发重分析,拖慢整个编辑器。
实操建议:
- 在
.vscode/settings.json中强制排除无关路径:"files.watcherExclude": {<br> "**/node_modules/**": true,<br> "**/dist/**": true,<br> "**/build/**": true,<br> "**/.git/**": true,<br> "**/coverage/**": true<br>},<br>"search.exclude": {<br> "**/node_modules": true,<br> "**/dist": true,<br> "**/build": true<br>} - Windows 用户务必加
"files.useExperimentalFileWatcher": false(旧版文件监视器更稳定) - Mac/Linux 用户可尝试
"files.watcherInclude": ["**/*.ts", "**/*.js"]反向白名单,但需确认项目结构简单,否则易漏触发
VSCode 性能问题极少是单一原因,多数来自 tsserver + eslint + 文件监视器三者叠加失控。真正有效的优化不是调一个参数,而是切断它们相互触发的链路——比如关掉 tsserver 的自动诊断后,ESLint 就不再被拉去解析类型定义;排除了 node_modules 监视,GitLens 就不会反复重扫提交历史。这些细节不显眼,但决定你是否要每 10 分钟重启一次窗口。











