根本原因是WebStorm自带格式化器、ESLint与Prettier规则冲突,解决关键是统一规范:禁用ESLint格式规则、设WebStorm代码风格为Prettier、配置Git换行符为LF,并确保.vue文件被正确识别为Vue类型。

WebStorm 中 Prettier 报错(比如 Delete `␍`、缩进错乱、引号不一致)不是 Prettier 本身坏了,而是它和 WebStorm 自带格式化器、ESLint、Git 或项目配置在“抢活干”。修复的关键是让它们别打架,而不是关掉谁。
为什么保存后反而报更多 prettier/prettier 错误?
常见现象:你按 Ctrl + Alt + L 格式化,结果 quotes、semi、indent 全红了;或者保存后自动加了分号,但 ESLint 又报 no-extra-semi。
- WebStorm 的
Code Style设置(如 JavaScript → Tabs and Indents)默认独立生效,会覆盖 Prettier 规则 - 没禁用 ESLint 里和 Prettier 冲突的规则(比如
indent、quotes),导致 ESLint 和 Prettier 各自检查、各自报错 -
eslint-plugin-prettier没启用,或eslint-config-prettier没加到.eslintrc.js的extends末尾 - 项目根目录缺少
.editorconfig,导致不同人编辑时换行符/缩进不统一
如何让 WebStorm 完全听 Prettier 的?
目标是关闭 WebStorm 自己的格式化逻辑,只让它调用 Prettier —— 这是最干净的解法。
- 打开
Settings > Editor > Code Style > JavaScript,点击右上角齿轮图标 →Set from… > Predefined style > Prettier - 同理设置
CSS、HTML、TypeScript的 Code Style 也为Prettier - 确认
Settings > Languages & Frameworks > JavaScript > Code Quality Tools > Prettier中:-
Prettier package指向项目本地的node_modules/prettier(不是全局) -
Run on save勾选,且Run for files包含**/*.vue(Vue 项目必须)
-
- 关闭 WebStorm 自动格式化干扰项:
Settings > Editor > General > On Save > Reformat code和Optimize imports全部取消勾选
Delete `␍` 错误必须从 Git 和文件系统双端解决
这个错误本质是 CRLF(Windows)混入 LF(Prettier 默认)环境,单靠 IDE 设置无法根治。
- 先统一 Git 行尾:在项目根目录运行
git config core.autocrlf false(不要用true或input) - 再统一已有文件:运行
npx prettier --write .(注意是项目根目录,不是src/) - 强制新文件用 LF:在
Settings > Editor > Code Style > Line Separators选Unix and macOS (\n) - 加
.editorconfig防复发:root = true [*] end_of_line = lf insert_final_newline = true
Vue 单文件组件里为什么 <script> 和 <template> 格式化不一致?
WebStorm 默认把 .vue 当作 HTML 文件处理,<script> 块可能被 JS 格式化器接管,而 <template> 被 HTML 格式化器接管 —— 两者规则不同,自然打架。
- 确保
Settings > Languages & Frameworks > JavaScript > Vue.js已启用(Vue 插件必须开启) - 在
Settings > Editor > File Types中,确认.vue被识别为Vue.js类型,不是HTML - 在
Prettier设置里,File types明确添加vue(不是只写js,ts,html) - 如果仍异常,临时在
.vue文件顶部加注释告诉 Prettier:// prettier-ignore(慎用,仅调试)
最易被忽略的一点:所有配置(.eslintrc.js、.prettierrc、.editorconfig)必须放在项目根目录,且文件名大小写完全匹配。WebStorm 不会向上查找父级配置,也不会自动识别 prettier.config.js(除非你在 Prettier 设置里手动指定路径)。


















