vscode首次加载慢的核心是默认执行过多无效动作,需禁用冷启抢跑插件、在项目级.vscode/settings.json中配置files.watcherexclude排除node_modules/dist/build、eslint.options.ignorepath指向.eslintignore、关闭javascript/typescript.suggest.autoimports。

VSCode 首次加载慢,核心问题不是“没配参数”,而是默认加载了太多它不该立刻干的事——比如监听几万个 node_modules 文件、让 ESLint 扫完整个依赖树、在你还没敲一个字时就为所有语言预热 AST 分析。优化不是加参数,是砍掉冷启动时的无效动作。
怎么确认哪些插件在抢跑启动资源
别猜,直接看 VSCode 自己记的账:
- 按
Ctrl+Shift+P(Windows/Linux)或Cmd+Shift+P(macOS),输入并运行Developer: Show Running Extensions - 找状态为 “Active” 且没触发任何具体事件(比如没打开 JS 文件、没执行命令)的插件——这些就是冷启时自动拉起的“嫌疑插件”
- 右键 →
Extension Details→ 点齿轮图标 → 展开When字段,看它的activationEvents值:若为"*"、"onStartupFinished"或宽泛的"onLanguage:json",基本就是拖慢元凶
必须改的三项配置(全写在项目级 .vscode/settings.json)
用户级设置对项目启动无效,这些必须放在项目根目录下的 .vscode/settings.json 里,改完要**完全关闭 VSCode 窗口再重开**,否则不生效:
-
"files.watcherExclude"至少包含:"**/node_modules/**": true、"**/dist/**": true、"**/build/**": true;用 pnpm 加"**/node_modules/.pnpm/**": true -
"eslint.options"必须显式设"ignorePath": ".eslintignore",且确保项目根目录有.eslintignore,内容含node_modules/、dist/、build/ - 关掉自动导入:
"javascript.suggest.autoImports": false和"typescript.suggest.autoImports": false——它每次触发都做全项目符号分析,大型项目单次就 800ms+
延迟加载比禁用更稳妥(VSCode 1.86+)
有些插件你确实需要,但不需要它开机就蹲着——比如 esbenp.prettier-vscode、redhat.vscode-yaml。用 extensions.experimental.affinity 把它们从“冷启加载”变成“首次调用才加载”:
- 在
settings.json(用户级或工作区级均可)中加:
"extensions.experimental.affinity": {
"esbenp.prettier-vscode": 2,
"redhat.vscode-yaml": 2,
"ms-python.python": 2
}
2 表示“延迟加载”,VSCode 启动时不激活,等你第一次格式化、编辑 YAML 或运行 Python 脚本时才加载最容易被忽略的是:改完 files.watcherExclude 不重启整个窗口,监听器根本不会重载;而 eslint.options.ignorePath 没配,ESLint 就真会默默扫描 node_modules/.bin/eslint 里的源码——这些都不是“参数没加够”,是默认行为没拦住。











