prettier 在 vscode 中需手动设为默认格式化工具并安装本地 prettier 包,否则不生效;eslint 需用 eslint-config-prettier 且置于 extends 末尾以避免冲突;项目级 .prettierrc 配置优先于 vscode 设置。

Prettier 在 VSCode 里默认不生效,必须手动配置格式化程序并设为默认,否则按 Shift+Alt+F 或保存时根本不会触发。
安装 Prettier 扩展和依赖
只装 VSCode 插件(如 Prettier - Code formatter)不够,项目级格式化需要本地或全局的 prettier 包支持:
- 推荐在项目根目录运行
npm install --save-dev prettier(或yarn add -D prettier),避免不同项目格式不一致 - 如果全局安装(
npm install -g prettier),VSCode 可能因权限或路径问题找不到,尤其在 macOS 或使用 nvm 时 - 扩展本身不带 Prettier CLI,它只是调用你本地安装的版本;没装包会报错:
Failed to load module 'prettier'
设置默认格式化工具为 Prettier
VSCode 默认用内置格式器(比如 JavaScript 的 vscode.typescript-language-features),必须显式指定 Prettier:
- 打开命令面板(
Ctrl+Shift+P/Cmd+Shift+P),输入并选择Format Document With... - 选
Configure Default Formatter...→ 选Prettier - 或者直接编辑
.vscode/settings.json,加这一行:"editor.defaultFormatter": "esbenp.prettier-vscode" - 注意:如果同时启用了
editor.formatOnSave,但没设默认格式器,保存时依然不会走 Prettier
处理 ESLint 和 Prettier 冲突
ESLint 的 eslint-config-prettier 是禁用所有与 Prettier 冲突规则的“补丁”,不是增强插件:
- 必须安装:
npm install --save-dev eslint-config-prettier - 在
.eslintrc.js或.eslintrc.cjs中,把它放在extends数组**最后**:["plugin:react/recommended", "prettier"] - 如果顺序反了(比如
"prettier"在前),ESLint 会重新启用被覆盖的规则,导致保存后又自动改回不符合 Prettier 的样式 - VSCode 的 ESLint 扩展(
dbaeumer.vscode-eslint)默认不接管格式化,仅校验;想让它“修”代码需额外配eslint.format.enable: true,但更推荐让 Prettier 负责格式、ESLint 负责逻辑检查
自定义 Prettier 行为的关键配置
VSCode 的 prettier.* 设置项优先级低于项目级 .prettierrc 或 package.json 中的 prettier 字段,后者才是真实生效源:
- 项目根目录放
.prettierrc(JSON/YAML/JS 格式均可),例如:{ "semi": false, "singleQuote": true, "tabWidth": 2 } - 不要依赖 VSCode 设置里的
prettier.semi等开关——它们只在没找到项目配置时兜底,容易造成团队配置不一致 - 对 TypeScript 文件,确保
prettier版本 ≥ 2.0,并在.prettierrc中显式加"parser": "typescript",否则可能误用 JS parser 导致格式错误 - 如果某些文件不想被格式化(如生成的
dist/或node_modules/),在.prettierignore里写路径,语法类似.gitignore
最常被忽略的是:Prettier 不处理分号、引号等风格问题以外的逻辑(比如变量命名、import 排序),它只做“打印样式”。想统一代码质量,得配合 ESLint + EditorConfig + Commit Hooks,单靠格式化按钮解决不了深层一致性问题。











