webstorm保存时自动格式化需手动开启settings > tools > actions on save中的reformat code开关,否则ctrl+s仅保存不格式化;还需确认未勾选only if file is physically modified,并为各语言单独设置prettier为默认格式器。

WebStorm 保存时不会自动格式化代码,除非你手动打开 Reformat code 开关——这是最常被忽略的一步,不是装了插件、配了 Prettier 或 ESLint 就能生效。
Reformat code 开关在哪?为什么点了没反应
关键路径是 Settings > Tools > Actions on Save,必须勾选 Reformat code。不点这个,按 Ctrl+S 就只是写入磁盘,缩进、空格、换行全都不会动。
常见错误现象:
- 点了保存,代码完全没变化——八成是这里没勾
- 只对
.js文件生效,.ts或.vue没反应——检查右下角状态栏文件类型是否识别为JavaScript,不是Plain Text;右键文件 →Override File Type手动设对 - 勾了但偶尔失效——确认下方两个选项都没勾:
Only if file is physically modified(WebStorm 有时认为“光标移动不算修改”)和Only if code style errors detected(开了就变成“只在报红时才格式化”)
Prettier 被设为默认格式器了吗?
WebStorm 默认用内置 JavaScript 格式化器,即使你装了 Prettier 插件、也装了 prettier 包,它也不会接管。必须显式指定。
操作要点:
- 进
Settings > Editor > Code Style > JavaScript(或TypeScript、Vue.js),点右上角齿轮 →Set from…→ 选Prettier - 每个语言 tab 都要单独设置一次,不能只设
JavaScript就以为全覆盖 - 检查
Formatter下拉菜单里选的是Prettier,不是IDE Default -
Settings > Languages & Frameworks > JavaScript > Code Quality Tools > Prettier中的Package路径必须指向项目本地的node_modules/prettier,别指向全局安装路径
ESLint 和 Prettier 同时启用会互相打架
如果在 Actions on Save 里既勾了 Reformat code(走 Prettier),又勾了 Run eslint --fix(或通过宏/插件触发),就会出现“格式化→ESLint 报错→修复→再格式化”的循环:分号反复出现、空行消失、光标乱跳。
推荐做法:
- 二选一:只开
Reformat code(用 Prettier),ESLint 仅作检查提示(显示波浪线) - 若必须用 ESLint 自动修复,在
.eslintrc.js里明确禁用所有格式规则:extends: ["eslint:recommended", "prettier"],并加"prettier/prettier": "error" - 不要在
Actions on Save里额外勾选Run eslint --fix—— WebStorm 官方不原生支持该动作;真要跑 CLI,用File Watchers更稳
.prettierrc.json 为什么没被读取?
WebStorm 对配置文件路径和命名极其敏感,错一个就 fallback 到内置规则(比如双引号、4空格、结尾分号),看着像“没生效”,其实是压根没加载。
必须满足:
-
.prettierrc.json放在项目根目录,且与package.json同级 - monorepo 中每个子包都要有自己的
.prettierrc.json - 优先用
.prettierrc.json(最稳),.prettierrc(无后缀)次之;prettier.config.js必须写成module.exports = {},不能用export default -
.prettierignore也得放根目录,每行一个路径,不支持通配符如**/test.js,得写成src/*/test.js或tests/**/*.js
真正起效的是项目级配置文件,不是 IDE 设置。团队协作时,.idea/prettier.xml 绝对不能提交到 Git —— 不同人系统路径、Node 版本都不同,极易出错。











