Prettier 格式化 Vue 模板时为什么缩进不对? 闲人志利 提问于 2026-03-04 12:13:18 阅读 8 前端 我用 Prettier 格式化 Vue 文件,但模板部分的缩进总是乱的,明明配置了 tabWidth 为 2,可它还是用 4 个空格。试过重启编辑器、重装插件都没用。 这是我的组件代码: <template> <div class="container"> <h1>Hello World</h1> </div> </template> 期望缩进是 2 个空格,但保存后变成 4 个,是我哪里配错了吗? 我来解答 赞 4 收藏 分享 生成中... 手机扫码查看 复制链接 生成海报 反馈 发表解答 您需要先 登录/注册 才能发表解答 1 条解答 爱学习的建宇 Lv1 这大概率是配置冲突或者编辑器插件抢了格式化的控制权。Vue 项目里这种情况太常见了,Vetur 或者 Volar 插件有时候会用自己的规则覆盖 Prettier,导致你配了半天也没用。 最稳妥的办法是在项目根目录建一个 .prettierrc 文件,把配置写死,别依赖编辑器设置。内容直接写 JSON: { "tabWidth": 2, "useTabs": false, "semi": false, "singleQuote": true } 建好之后去 VS Code 设置里搜一下 default formatter,确保 Vue 文件的默认格式化程序选的是 Prettier - Code formatter。如果你装了 Vetur,记得把它的 vetur.format.defaultFormatter.html 之类的选项关掉或者指向 Prettier,别让它自作主张。 还有个容易被忽略的坑是项目里的 .editorconfig 文件。如果这个文件存在且里面设置了 indent_size = 4,它会覆盖 Prettier 的设置,优先级很高,一定要检查一下。 从代码安全和规范的角度来看,光靠编辑器配置是不够的,万一有人没装插件或者配置不一样,提交上去的代码格式就乱了。建议你在 package.json 里加个 lint 脚本,或者用 husky 在 commit 阶段做一次格式化校验,强制统一缩进,避免代码风格不一致引发的合并冲突。 回复 点赞 2026-03-04 15:06 加载更多 相关推荐 1 回答 18 浏览 Prettier 为啥不格式化我的 Vue 单文件组件? 我用 Prettier 格式化 Vue 文件时,模板部分完全没反应,是配置问题吗? 我已经装了 Vetur 和 Prettier 插件,也设置了默认格式化工具为 Prettier,但保存时只有 scr... 令狐淇钧 工具 2026-02-28 03:42:22 2 回答 28 浏览 在Vue项目里改Prettier的parser选项没效果怎么办? 我在Vue项目里配置Prettier时,发现代码格式化总是报错,明明设置了parser是"vue": { "parser": "vue", "semi": false } 但保存时还是提示Failed... 一羽霏 工具 2026-02-13 20:13:26 2 回答 54 浏览 Prettier安装了Vue插件但模板格式没变化怎么办? 刚给项目装了prettier-plugin-vue,配置了.prettierrc里plugins和singleQuote选项,但保存时双引号还是没转成单引号,vue文件的模板结构也没自动整理。重启过V... 欧阳琪帆 工具 2026-02-05 13:17:28 2 回答 29 浏览 为什么Prettier插件无法正确格式化HTML中的自定义组件标签? 我在用Prettier+prettier-plugin-vue格式化Vue单文件组件时,发现自定义组件的标签会自动合并成一行,比如<MyComponent></MyComponent... Good“莉莉 工具 2026-02-16 23:08:24 1 回答 26 浏览 为什么安装了prettier的husky hook后提交还是没格式化? 刚给项目配了husky + prettier的pre-commit钩子,但每次提交代码都没触发格式化。已经按文档装了husky、prettier、lint-staged,package.json里配置... 司徒兴瑞 工具 2026-02-19 12:23:27 1 回答 19 浏览 ESLint 和 Prettier 配合时为什么格式化冲突? 我按照网上的教程配了 ESLint + Prettier,但保存文件时格式老是打架。比如 Prettier 想加个分号,ESLint 却报错说不能加分号,明明 .eslintrc 里已经关了这个规则。... Newb.一涵 工具 2026-02-28 13:00:20 2 回答 32 浏览 VuePress构建SSR时为什么静态资源路径不对? 在开发VuePress主题时遇到了奇怪的问题,当我用vite build构建SSR版本,生成的HTML里静态资源路径变成了绝对路径。比如在主题布局文件里写的<link rel="styleshe... 萌新.艳君 框架 2026-02-06 17:39:26 2 回答 67 浏览 Prettier格式化后自闭合标签括号间多出空格怎么解决? 我在用Prettier格式化HTML时发现,像这样的自闭合标签,格式化后变成了,括号里多了一个空格,但我想让它保持紧贴的形式,该怎么调整啊? 我尝试过搜索bracketSpacing配置,但没搞懂具体... UX-冰冰 工具 2026-02-01 13:52:27 2 回答 75 浏览 Vue中实现手势旋转时,为什么旋转角度计算不准? 我在用Vue做图片旋转功能,通过touch事件计算旋转角度,但发现旋转方向有时会反,角度数值也不对。代码里用Math.atan2计算两点夹角,但测试时顺时针转反而显示负角度,代码哪里出问题了? exp... ❤庆玲 移动 2026-01-29 22:37:36 1 回答 9 浏览 IntersectionObserver 在 Vue 中不触发回调是为什么? 我在 Vue 里用 IntersectionObserver 监听一个元素是否进入视口,但回调一直没执行,不知道哪里出错了。 我已经确认元素确实滚动到了可视区域,也试过调整 threshold 和 r... 东方一泽 前端 2026-03-03 20:17:20
最稳妥的办法是在项目根目录建一个
.prettierrc文件,把配置写死,别依赖编辑器设置。内容直接写 JSON:建好之后去 VS Code 设置里搜一下
default formatter,确保 Vue 文件的默认格式化程序选的是Prettier - Code formatter。如果你装了 Vetur,记得把它的vetur.format.defaultFormatter.html之类的选项关掉或者指向 Prettier,别让它自作主张。还有个容易被忽略的坑是项目里的
.editorconfig文件。如果这个文件存在且里面设置了indent_size = 4,它会覆盖 Prettier 的设置,优先级很高,一定要检查一下。从代码安全和规范的角度来看,光靠编辑器配置是不够的,万一有人没装插件或者配置不一样,提交上去的代码格式就乱了。建议你在
package.json里加个 lint 脚本,或者用 husky 在 commit 阶段做一次格式化校验,强制统一缩进,避免代码风格不一致引发的合并冲突。