VSCode 大项目卡顿的根本原因是默认配置未裁剪,禁用非必要扩展(如 GitLens、Auto Import)、关闭高开销内置功能(如自动导入、快速建议)、限制 TypeScript 服务范围、排除 node_modules 等目录监视、拆分工作区可显著提升性能。
VSCode 在打开大型项目时变卡、内存飙升、搜索/跳转变慢,根本原因不是 VSCode 本身不行,而是默认配置没针对大项目做裁剪——关掉几个默认开启的“智能”功能,效果立竿见影。
禁用非必要扩展与内置功能
大量扩展(尤其是 ESLint、Prettier、GitLens、TypeScript 自动导入类)会在后台持续扫描、解析、监听文件,对百万行级项目是内存杀手。内置功能如
或
也会触发高频语言服务请求。
在命令面板(
)中运行
,禁用
、
、
等非核心扩展
在
中显式关闭高开销功能:
特别注意:GitLens 的
默认为空,务必手动设为
,否则它会为每个 JS/TS 文件发起 Git blame 查询
调整 TypeScript 语言服务范围
TypeScript 语言服务(TSServer)是 VSCode 处理 TS/JS 项目最重的后台进程。默认它会尝试索引整个工作区,包括
和构建产物,导致内存占用常超 2GB。
在项目根目录添加
(即使项目是 JS),并严格限定
:
设置
,避免 TSServer 为
、
等全局类型反复解析声明文件
若项目不依赖完整类型检查,可临时关闭 TS 插件:在设置中搜
→ 设为
;或直接禁用
扩展(仅保留 TS 官方插件)
文件监视与搜索性能调优
VSCode 默认使用操作系统原生文件监视器(如 Linux 的 inotify、macOS 的 fsevents),但大项目下易触发系统限制或轮询 fallback,导致 CPU 持续 100%、搜索无响应。
Eclipse导入Android或其他的JAVA项目的正确方法 WORD版
本文档主要讲述的是Eclipse导入Android或其他的JAVA项目的正确方法;希望本文档会给有需要的朋友带来帮助;感兴趣的朋友可以过来看看
下载
增大系统 inotify 限制(Linux/macOS):
在
中启用更轻量的搜索模式:
避免用
全局文件搜索(
)查找非当前目录文件;改用
→
或在资源管理器中展开子目录后按名称过滤
工作区拆分与多窗口策略
单工作区加载整个 monorepo 或含多个子系统的项目,等于让 VSCode 同时维护 N 套语言服务、N 份文件监视器——这不是优化能解决的问题,必须结构上隔离。
不要把整个
目录拖进一个窗口;为每个子包单独建
文件,例如:
禁用跨工作区索引:确保每个
的
为
,防止 TS 插件偷偷下载 @types 包
浏览器开发调试时,关闭
(设为
),否则 VSCode 会持续扫描所有 Chrome 进程,拖慢主界面响应
真正卡顿的根源往往不在“怎么加速”,而在“哪些东西本不该启动”。大项目里,少一个自动导入、少一次
node
_modules 类型推导、少一层递归文件监听,内存就省下 300MB——这些不是配置技巧,是取舍判断。
typescript.preferences.includePackageJsonAutoImportseditor.quickSuggestionsCtrl+Shift+PExtensions: Show Built-in ExtensionsGitLensAuto ImportPath Intellisensesettings.json{
"typescript.preferences.includePackageJsonAutoImports": "off",
"editor.quickSuggestions": false,
"editor.suggest.snippetsPreventQuickSuggestions": true,
"files.watcherExclude": {
"**/node_modules/**": true,
"**/dist/**": true,
"**/build/**": true,
"**/.git/**": true
}
}gitlens.advanced.files.exclude["**/node_modules/**", "**/dist/**"]node_modulestsconfig.jsoninclude{
"compilerOptions": {
"skipLibCheck": true,
"moduleResolution": "node"
},
"include": ["src/**/*", "types/**/*"],
"exclude": ["node_modules", "dist", "build", "coverage"]
}"typescript.preferences.useAliasesForBuiltinTypes": falseArrayPromisetypescript.suggest.autoImportsfalseTypeScript and JavaScript Language Featuresecho fs.inotify.max_user_watches=524288 | sudo tee -a /etc/sysctl.conf && sudo sysctl -psettings.json{
"search.followSymlinks": false,
"search.useRipgrep": true,
"search.maintainFileSearchCache": false,
"search.exclude": {
"**/node_modules": true,
"**/dist": true,
"**/build": true,
"**/*.log": true
}
}Ctrl+Pworkbench.action.quickOpenCtrl+Shift+PFiles: Open Recentpackages/.code-workspace{
"folders": [
{ "path": "packages/core" },
{ "path": "packages/ui" }
],
"settings": {
"files.watcherExclude": { "**/../*": true }
}
}.code-workspacetypescript.preferences.disableAutomaticTypeAcquisitiontruedebug.javascript.autoAttachFilter"disabled"