VSCode格式化慢的主因是执行路径错误而非工具本身重,应禁用eslint.format.enable、改editor.formatOnSaveMode为modifications、确保.prettierignore在根目录并显式声明路径、配置files.watcherExclude排除node_modules/dist、本地安装Prettier并关闭全局解析。

VSCode 格式化代码慢,基本不是 Prettier 或 ESLint 本身太重,而是它们被塞进了错误的执行路径里——比如对 dist/*.js 全量解析、和 ESLint 串行打架、或者每次保存都扫整个 AST。优化的关键是砍掉无效工作,而不是升级硬件或换插件。
为什么 editor.formatOnSave 一开就卡
VS Code 默认在保存时调用整个文档的格式化服务,对大文件(>1000 行)或生成文件(如 dist/*.js),Prettier 需要完整 parse + print,CPU 和 I/O 压力陡增。更糟的是,若同时启用了 eslint.format.enable,它们可能被串行触发,形成“格式化链”阻塞。
- 运行命令面板 → 输入
Format Document With,看列出几个提供者;多个意味着冲突风险高 - 把
eslint.format.enable设为false,改用 ESLint 的保存前 lint(不自动修) - 把
editor.formatOnSaveMode从默认的file改成modifications,只处理你改过的几行 - 确认当前语言模式正确:比如
.tsx文件右下角必须是TypeScript React,不是TypeScript
.prettierignore 不生效的常见原因
.prettierignore 不只是“忽略”,它是性能开关。很多人建了却没生效,主因是路径没匹配上,或 VS Code 没读到它。
- 必须放在项目根目录(即
package.json所在层),内容写相对路径:node_modules/、dist/、**/*.min.js,不要加./前缀 - 在
.vscode/settings.json中显式声明:"prettier.ignorePath": ".prettierignore",避免查找失败 -
files.watcherExclude必须同步配置,否则编辑器仍在后台监听这些目录:"**/node_modules/**"、"**/dist/**"等都要加上 - 如果用了 pnpm,
node_modules/这一行可能不够,得补上node_modules/.pnpm/**
本地安装 Prettier + 关闭全局解析
如果项目里没装 prettier,插件会 fallback 到全局安装或内置版本,而全局模块路径查找、版本兼容判断、甚至跨 Node 版本加载都会拖慢首次格式化速度。
- 确保本地安装:
npm install --save-dev prettier(或yarn add -D prettier) - 在
.vscode/settings.json中强制关闭全局解析:"prettier.resolveGlobalModules": false - 顺手关掉 editorconfig 支持:
"prettier.useEditorConfig": false,避免多一层配置文件解析 - 检查是否误启用了其他格式化插件(如 Beautify、JS-CSS-HTML Formatter),它们对 TypeScript/JSX 支持极弱,容易触发降级重试
批量格式化别靠快捷键
Shift+Alt+F(Windows/Linux)或 Shift+Option+F(macOS)只能格式化当前打开的文件,不能批量处理整个项目。真要批量格式化,必须走命令行 + prettier CLI 这条路。
- 基础命令:
npx prettier --write "**/*.{js,jsx,ts,tsx,css,scss,html,json,md}" - 加
--ignore-unknown避免遇到不支持的文件类型报错 - 加
--loglevel warn减少输出噪音,只显示真正被修改的文件 - 路径通配符必须用双引号包裹,否则 shell 可能提前展开,漏掉深层嵌套文件
- 首次运行建议先加
--check测试,确认哪些文件会变,再换--write
最常被忽略的一点:VS Code 的文件监听负担比格式化本身更重。哪怕你关掉了所有格式化插件,只要 files.watcherExclude 没配全,编辑器仍在后台疯狂扫描 node_modules 和 dist,CPU 就不会闲下来。


















