VSCode默认不读.prettierignore,必须手动设置prettier.ignorePath为.prettierignore(字符串值)、文件置于工作区根目录、插件版本≥10.0.0并彻底重启窗口;其语法为glob模式,路径均相对于工作区根目录,且需防其他格式化器劫持。

VSCode 保存时仍格式化被 ignore 的文件?检查 prettier.ignorePath 是否生效
VSCode 默认完全不读 .prettierignore,这是绝大多数“忽略失效”问题的根源。插件不会自动扫描项目根目录下的该文件,必须手动告诉它路径。
- 在 VSCode 设置中搜索
prettier.ignorePath,设为字符串值.prettierignore(不加引号,也不写成"./.prettierignore") -
.prettierignore文件必须放在工作区根目录(即你通过File → Open Folder打开的那个文件夹),不能放在子目录或用户主目录 - 插件版本需 ≥ 10.0.0;旧版本即使设置了也静默忽略
- 修改后必须彻底重启 VSCode 窗口(
Developer: Reload Window不够)
.prettierignore 的 glob 写法和常见错误
它用的是类似 .gitignore 的 glob 语法,不是正则表达式,路径全部相对于工作区根目录,且不识别 ./ 或绝对路径前缀。
-
dist/✅ 正确:忽略整个目录(结尾斜杠关键) -
**/*.d.ts✅ 正确:忽略所有层级的声明文件 -
src/**/test-*.js✅ 正确:匹配src下任意深度中以test-开头的 JS 文件 -
node_modules❌ 危险:可能只忽略同名文件,而非目录;应写成node_modules/ -
./src/index.js❌ 无效:.和/开头的路径会被 Prettier 忽略
右下角状态栏显示不是 Prettier?说明格式化根本没走它
VSCode 保存时调用哪个工具,取决于当前文件的语言模式和 editor.defaultFormatter 配置。如果右下角显示的是 TypeScript 或 ESLint,那 .prettierignore 就完全不参与。
- 点击右下角语言标识(如
Vue、JavaScript),确认是否为预期类型;.vue文件需 Prettier 显式支持 Vue 解析器 - 右键编辑器 →
Format Document With…→ 查看当前默认 formatter 是否为esbenp.prettier-vscode - 在设置里搜
editor.defaultFormatter,确保对应语言(如[javascript]、[vue])明确设为esbenp.prettier-vscode - 关掉
eslint.autoFixOnSave,或改用eslint.codeAction.onSave.fixAll并确保规则与 Prettier 兼容
多个格式化工具共存时,.prettierignore 对 ESLint 无效
ESLint 有自己的忽略机制,和 Prettier 互不感知。如果你同时启用了 ESLint 格式化,它会按自己的规则运行,完全无视 .prettierignore。
- ESLint 使用
.eslintignore控制文件级忽略,语法同.gitignore - 规则级忽略需在
.eslintrc中显式关闭冲突规则,例如:"prettier/prettier": "off" - 若两者都启用 auto-format,极易互相覆盖;建议只保留一个作为
editor.defaultFormatter,另一个仅用于 lint 检查 -
editor.formatOnSaveExclude是 VSCode 自身的路径排除,但仅对默认 formatter 生效,且不推荐——它绕过了工具自身的 ignore 逻辑,容易遗漏边界情况
.prettierignore 就形同虚设。


















