团队统一代码规范需共用eslint和prettier配置文件(.eslintrc.cjs、.prettierrc)及.vscode/settings.json,后者仅声明格式化开关,不可替代规则定义;须用eslint-config-prettier消除冲突,并验证插件、版本、设置生效链路。

VSCode 本身不强制代码规范,团队统一靠的是配置可共享的规则引擎(如 ESLint、Prettier)+ 可提交到 Git 的配置文件,而不是每个人手动点设置。
为什么直接改 VSCode Settings.json 不适合团队协作
本地 settings.json 是用户级或工作区级的,不会随项目提交;即使放 .vscode/settings.json,它只能控制格式化触发时机和默认工具,**不能定义“什么算错误”或“怎么修缩进”**——那得靠 ESLint 规则或 Prettier 配置文件。
-
"editor.formatOnSave": true可以开,但若没配.prettierrc或eslint.config.js,它根本不知道该怎么格式化 - 不同人装的插件版本不同,比如 Prettier 插件 v11 和 v12 对
semi的默认值处理可能不一致 - 终端里跑
npm run lint和编辑器里自动修复行为不一致,说明规则没对齐——问题一定出在配置文件没共用
必须提交到仓库的 3 个核心配置文件
它们共同构成“谁打开这个项目,就按同一套规则检查和格式化”的基础。缺一不可。
-
.eslintrc.cjs(或eslint.config.js):定义 JS/TS 的代码质量规则,比如"no-console": "error"、"@typescript-eslint/no-unused-vars": "warn" -
.prettierrc:只管格式(空格、换行、引号),不管逻辑,例如{"semi": false, "singleQuote": true} -
.vscode/settings.json:声明本项目希望启用哪些编辑器功能,关键项包括:"editor.defaultFormatter": "esbenp.prettier-vscode"、"editor.formatOnSave": true、"editor.codeActionsOnSave": {"source.fixAll.eslint": true}
注意:.vscode/settings.json 中不要写死路径或个人偏好(如 "files.autoSave": "onFocusChange"),只保留与项目规则强相关的开关。
ESLint 和 Prettier 冲突怎么办
它们职责不同,但交集在“格式”上(比如缩进、逗号)。不协调就会出现:保存时 Prettier 把逗号删了,ESLint 又标红提示“missing comma”。
- 用
eslint-config-prettier关闭 ESLint 中所有和 Prettier 重叠的规则——这是标准解法,不是妥协 - 确保 Prettier 是唯一负责格式化的工具,ESLint 只做代码质量检查(加
"plugin:prettier/recommended"到 extends) - 验证方式:删掉
.prettierrc,运行npx eslint --fix src/,如果代码被改成不符合团队风格的样子,说明 ESLint 还在干格式化的活,配置没切干净
新成员拉代码后仍不生效?检查这 4 点
常见失效不是配置写错了,而是环境链路断在某个环节。
- VSCode 是否启用了工作区推荐插件?看右下角是否弹出 “Recommended extensions” 提示,点“Install All” —— 尤其要装
esbenp.prettier-vscode和dbaeumer.vscode-eslint - 项目根目录下运行
npx eslint --version和npx prettier --version,确认本地安装的版本和package.json中声明的一致(避免全局 Prettier 干扰) - VSCode 设置里搜
format on save,确认勾选的是 “Format On Save” 而不是 “Format On Type”——后者只对输入实时生效,不覆盖粘贴或大段修改 - 右键文件 → “Format Document With…” → 看列表里默认项是不是
Prettier,如果不是,说明"editor.defaultFormatter"没生效,可能被用户级 settings 覆盖了
最隐蔽的问题:某人本地装了旧版 ESLint 插件(v2.x),而项目用的是 ESLint v8+ 的 flat config(eslint.config.js),插件根本不识别该配置格式——此时 VSCode 里完全不报错也不修复,静默失效。











