保存时自动格式化比手动触发更关键,因其是确定性行为:只要文件保存就无条件执行,强制统一缩进、引号、分号等细节,不给主观选择留余地;而手动格式化易被跳过或遗忘。

Prettier 和 ESLint 插件会直接覆盖你手动调整格式和检查错误的习惯——不是“辅助”,而是“接管”。
为什么保存时自动格式化比 Ctrl+Shift+I 更关键
手动触发格式化(比如用 Ctrl+Shift+I)容易被跳过、遗忘,尤其在快速调试或赶需求时。而 editor.formatOnSave 是确定性行为:只要文件保存,就无条件执行。
- 它强制统一缩进(
tabWidth: 2)、引号(singleQuote: true)、分号(semi: true)等细节,不给“我这次想用双引号”留余地 - 如果项目根目录有
.prettierrc,VSCode 会优先读取它,而不是 settings.json 里的同名字段——这点常被忽略 - 禁用
editor.detectIndentation(设为false),否则打开旧项目时 VSCode 可能沿用文件原有缩进,导致保存后格式“突变”
ESLint 不是标红就完事,它得能修
光靠 eslint.validate 列出问题只是半截路。真正改变习惯的是让 ESLint 在保存时自动修复可修复项:
详细的 Three.js 3D 图形参考,涵盖场景设置、相机、几何体、材质、光照、动画、控制器、加载器、数学工具和调试。
- 必须配
"editor.codeActionsOnSave": {"source.fixAll.eslint": "explicit"},否则no-unused-vars或quotes这类规则只报错不修 -
eslint.useFlatConfig设为true才能正确加载eslint.config.mjs(新式配置),旧版.eslintrc.js在某些 Node 版本下会静默失效 - 若同时启用了 Prettier,务必在 ESLint 配置里加
extends: ["prettier"],否则prettier/prettier规则会和 ESLint 内置格式规则打架,保存时反复“拉锯”
语言特定设置比全局设置更可靠
把 editor.defaultFormatter 直接写在顶层 settings.json 里,看似省事,但容易被其他插件或语言模式覆盖。正确做法是用语言作用域:
- 在
settings.json中写"[javascript]": {"editor.defaultFormatter": "esbenp.pretterr-vscode"},确保只对.js文件生效 - JavaScript 和 TypeScript 的语言 ID 不同:
javascript对应.js,typescript对应.ts,混用会导致格式化失灵 - 如果项目里有
.mjs或.cjs,需额外加"files.associations": {"*.mjs": "javascript", "*.cjs": "javascript"},否则这些文件不会触发 JS 相关规则
最常被忽略的点:格式化插件和 ESLint 插件的启动顺序。VSCode 启动时先加载格式化器,再初始化 ESLint 语言服务器。如果 prettier-vscode 没装好或路径不对,editor.formatOnSave 会静默失败——此时你看不到任何报错,只发现代码没变样。










