eslint与prettier需通过eslint-config-prettier禁用冲突规则,并配置vs code仅用eslint格式化;volar须替代已停更的vetur以支持vue 3类型推导;tsconfig.json中需正确配置paths和baseurl才能使@/别名补全生效。

ESLint + Prettier 怎么配才不打架
直接装两个插件不等于能用,90% 的格式冲突都来自 ESLint 里那些本该由 Prettier 管的规则(比如 quotes、semi、comma-dangle)。不调和,保存时会反复“修复→格式化→再报错”,光标乱跳,报错线不消失。
- 必须安装
eslint-config-prettier,并在.eslintrc.cjs(或eslint.config.js)的extends数组末尾加上它——顺序错了就白装 - VS Code 设置里关掉 Prettier 的自动格式化:
"prettier.enable": false;把 ESLint 设为唯一格式化器:"editor.defaultFormatter": "dbaeumer.vscode-eslint" -
"editor.formatOnSave": true和"editor.codeActionsOnSave": { "source.fixAll.eslint": true }这两句要同时开,否则只格式不修复 - 别在
settings.json里手动设eslint.options指向全局node_modules,项目本地的node_modules/.bin/eslint才能正确解析tsconfig.json和插件路径
Volar 为什么必须替代 Vetur
Vue 3 项目还在用 Vetur?不是“能用”,而是“正在悄悄漏掉类型错误”。Vetur 已停止维护,对 defineProps、ref<string></string>、setup() 返回值推导基本失效,甚至报 Cannot find name 'defineProps' 这种低级错误。
- 卸载 Vetur 后必须重启 VS Code(
Cmd+Shift+P→Developer: Reload Window),否则 Volar 的语言服务器不会接管.vue文件 - 项目根目录必须有
tsconfig.json或jsconfig.json,否则 F12 跳转、自动导入全挂;若<script setup lang="ts"></script>里组件没提示,检查compilerOptions.types是否包含"@vue/runtime-dom" - Volar 默认不处理
@/别名补全——这得靠Path Intellisense或 TypeScript 自身配置,不是 Volar 的责任
Path Intellisense 的 @/ 别名为啥不提示
不是插件坏了,是它根本没读到你的别名配置。Path Intellisense 默认只认物理路径,@/ 这种 webpack/vite 别名它自己不会猜,也不会自动读 webpack.config.js 或 vite.config.ts。
- 必须在项目根目录的
jsconfig.json或tsconfig.json中显式声明:"compilerOptions": { "baseUrl": ".", "paths": { "@/*": ["src/*"] } } - 改完配置后必须重载窗口(
Cmd+Shift+P→Developer: Reload Window),VS Code 缓存不刷新,补全永远不生效 - 别依赖
path-intellisense.mappings这种手动字符串映射——它绕过 TypeScript 模块解析逻辑,和实际构建行为不一致,容易导致“编辑器能提示,运行时报 module not found”
Auto Rename Tag 在 Vue 文件里失效怎么办
不是插件不支持 Vue,是默认激活语言列表里可能没开 vue。尤其 Volar 启用后,某些版本的 Auto Rename Tag 会因语言服务优先级问题被压制。
- 检查设置中
auto-rename-tag.activationOnLanguage是否包含"vue";没配就加:"auto-rename-tag.activationOnLanguage": ["html", "vue", "javascriptreact"] - 如果仍不响应,临时禁用 Volar 测试——确认是否冲突;若确认冲突,可降级 Volar 到 1.8.x 或换用
Vue Language Features (Volar)+Volar: Take Over Mode启用方式 - 注意:它只同步标签名本身,不处理属性(比如改
<div id="a"></div>的id不会动闭合标签),别对它有超出能力的期待
extends 顺序写反、baseUrl 漏写点号。这些地方一错,整个链路就静默失效,连报错都没有。











