vs code 保存时 html 不自动格式化需关闭内置格式器并配置 prettier:在 .vscode/settings.json 中设 "html.format.enable": false 和 "editor.defaultformatter": "esbenp.pretterr-vscode",确保语言模式为 html,统一 .editorconfig 与 prettierrc 缩进(均为 2 空格),禁用 editor.detectindentation,husky pre-commit 必须执行 prettier --write 并显式指定路径,ci 中注意 glob 兼容性与工作目录。

VS Code 保存时 HTML 不自动格式化?先关内置格式器
根本问题不是插件没装,而是 VS Code 默认用自己那套 html.format.enable 处理 HTML,Prettier 被静默跳过。不关它,所有配置都是摆设。
- 在项目根目录
.vscode/settings.json中必须写死:"html.format.enable": false - 同时指定 Prettier 为默认格式化器:
"editor.defaultFormatter": "esbenp.prettier-vscode"(注意插件 ID 别拼错) - 确认右下角语言模式是
HTML,不是Plain Text或其他——否则格式化根本不会触发
.editorconfig 和 prettier 缩进必须对齐,否则 Git 里全是空格冲突
编辑器输入时的行为(.editorconfig)和保存时的输出(prettier)若不一致,就会出现:你敲了 4 个空格 → 保存变 2 个 → 下次打开又被 .editorconfig 拉回 4 个 → Git 提交记录全是无意义空格变更。
-
.editorconfig中显式声明:[*.html]\nindent_style = space\nindent_size = 2 -
.prettierrc中同步:"tabWidth": 2, "useTabs": false - VS Code 设置中禁用
editor.detectIndentation,防止它自动覆盖.editorconfig
husky 预提交必须跑 prettier --write,不能只 --check
只校验不修复,等于把质量防线建在远端。本地已提交未格式化的代码,会污染历史、引发后续所有人 diff 爆炸。
- 用
husky绑定pre-commit钩子,命令必须是:npx prettier --write "src/**/*.html" "public/**/*.html" - 别用
**/*.html这种模糊 glob —— CI 容器里 shell 可能不支持,也容易漏掉路径 - 确保
.gitignore没误 exclude 掉模板目录,否则 husky 根本扫不到文件
CI 中 prettier --check 失败?先看路径和工作目录是否匹配
本地跑通、CI 报 “no files found”,90% 是 glob 路径没适配 CI 环境的实际工作目录结构。
- CI 脚本里不要依赖 shell 展开,显式写全路径:
"format:check": "prettier --check \"src/**/*.html\" \"public/**/*.html\"" - Node 版本低的 CI 环境可能不支持
**,降级用src/*/**/*.html - 检查 CI 日志是否真在项目根目录执行命令;有些流水线默认进的是子目录
.editorconfig 少写一行 [*.html],或是 husky 命令里漏了引号、CI 脚本里 glob 写成了相对路径。这些细节不落地,规范就只是文档里的一行字。前端入门到VUE实战笔记:立即使用
在学习笔记中,你将探索 前端 的入门与实战技巧!











