ESLint 和 Prettier 需明确分工:ESLint 负责代码质量校验,Prettier 专司格式化;需禁用 ESLint 格式化、设 Prettier 为默认 formatter、配置 .prettierrc,并确保语言模式与配置文件匹配。

ESLint 和 Prettier 不是“装了就完事”,必须明确分工、隔离职责,否则保存时会互相覆盖、报错或静默失效。
为什么 ESLint 校验后代码还是不格式化?
常见现象是:ESLint 显示 quotes 报错(比如用了双引号),但按 Ctrl+S 保存后没自动改成单引号——这说明 Prettier 没接管格式化,或 ESLint 正在错误地尝试格式化。
- 确认
settings.json中已禁用 ESLint 的格式化能力:"eslint.format.enable": false - 确保
"editor.defaultFormatter"指向 Prettier:"esbenp.prettier-vscode",而非 ESLint 或其他 formatter - 检查项目根目录是否存在
.prettierrc,且内容包含singleQuote: true等实际生效的规则 - 若使用
eslint.config.mjs(Flat Config),需设"eslint.useFlatConfig": true,否则 ESLint 插件可能读不到新配置
Auto Rename Tag 在 Vue/JSX 中突然失效?
不是插件坏了,而是它默认只监听 html 和 xml 语言模式。Vue 单文件组件里的 <template> 和 JSX 文件需要手动启用支持。
- 在
settings.json中添加:"auto-rename-tag.activationOnLanguage": ["html", "vue", "javascriptreact", "typescriptreact"] - 确保文件后缀正确:Vue 文件必须是
.vue,JSX 文件必须是.jsx或.tsx,VSCode 才能识别语言模式 - 如果用 Vetur(旧 Vue 项目),它可能与 Auto Rename Tag 冲突;建议迁移到
Volar,并关闭 Vetur
JavaScript Booster 的灯泡不出现?
这个插件依赖 ESLint 或 TypeScript 语言服务提供上下文诊断,不是“无脑触发”。光标必须停在可重构的语法节点上,且项目需有基础语言支持。
- 确保已安装
JavaScript and TypeScript Nightly或 VSCode 内置 TS 服务已激活(打开.js文件看右下角语言模式是否为JavaScript) - 不要放在字符串字面量、注释或空行里——灯泡只对变量声明、函数表达式、
if语句等 AST 节点响应 - 若项目无
package.json或未启用type: module,部分重构(如Convert to const)可能被禁用 - 重启 VSCode 或运行命令
Developer: Restart Extension Host可解决插件状态卡住问题
最易被忽略的是:所有插件行为都受当前文件的语言模式(右下角显示)和项目级配置文件双重约束。删掉一个 .eslintrc.cjs 或改错 languageId,整套 JS 管理逻辑就可能降级成“仅高亮”。


















