vscode插件需精准解决具体问题且避免干扰;eslint保存不报错不修复因缺少eslint进程、配置文件或codeactionsonsave指向;json格式化易破坏人工排版,应按语言启用formatonsave;拼写检查依赖语言模式与词典配置,且工作区settings.json优先覆盖用户设置。

VSCode 插件不是装得越多越好,而是要让每个插件都明确解决一个具体问题,且不互相干扰。盲目启用自动修复、格式化或校验,反而会导致保存时行为不可控、错误提示消失、甚至覆盖手动编辑内容。
为什么 ESLint 保存时不报错也不修复?
核心原因不是插件没装,而是三个条件缺一不可:ESLint 进程必须启动、配置文件必须被识别、codeActionsOnSave 必须精准指向它。
- 检查命令面板(
Ctrl+Shift+P)运行ESLint: Show Output Channel,看是否有Cannot find module 'eslint'或No ESLint configuration found报错 - 确认项目根目录存在
.eslintrc.cjs或package.json中有eslintConfig字段;没有就运行npx eslint --init - 在工作区
.vscode/settings.json中写明:"editor.codeActionsOnSave": { "source.fixAll.eslint": true }不要用已废弃的eslint.autoFixOnSave - TS 文件需额外配置 parser:确保
eslint.config.js中languageOptions.parserOptions.project指向有效的tsconfig.json
JSON 文件为什么越格式化越乱?
因为 editor.formatOnSave 是全局开关,而 JSON 配置文件(如 package.json、tsconfig.json)常含人工排版意图(如空行分组、注释占位),Prettier 或默认 formatter 会无视这些语义直接重排。
- 全局关闭:
"editor.formatOnSave": false - 按语言启用:
"[javascript]": { "editor.formatOnSave": true }, "[typescript]": { "editor.formatOnSave": true }, "[jsonc]": { "editor.formatOnSave": false } -
jsonc是 VSCode 对带注释 JSON(.jsonc)的语言标识,但即使普通.json文件,也建议统一用[json]规则控制,避免误触发 - 若真需格式化标准 JSON,用快捷键
Shift+Alt+F手动触发,而非依赖保存
拼写检查(Code Spell Checker)总不标红?
它默认只查字符串和注释,且极度依赖语言模式与词典配置——不是“开了就灵”,而是“配对才生效”。
- 右下角状态栏必须显示
Spell图标或当前语言(如en),否则未激活 - 按
Ctrl+Shift+P→Change Language Mode,确认文件是JavaScript React而非JavaScript,否则 JSX 内文本不被扫描 - 必须显式配置:
"cSpell.language": ["en", "zh-cn"], "cSpell.allowCompoundWords": true
仅写"zh"不够,“登录页”这类词仍会误报 - 变量名、函数名默认不检查,这是设计行为;如需检查,加
"cSpell.checkProgrammaticTypes": true,但会大量误报,不推荐
最易被忽略的一点:工作区 .vscode/settings.json 会完全覆盖用户级设置,所有关键配置(尤其是 codeActionsOnSave 和语言专属格式化)必须放在工作区配置里,否则团队成员打开项目时行为不一致。











