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

VSCode 默认根本不读 .prettierignore,除非你手动告诉它路径——这是 90% 的“忽略不生效”问题根源。
为什么 .prettierignore 在 VSCode 里经常被无视
终端里跑 prettier --write . 能跳过 dist/,但 VSCode 保存时照样格式化它,根本原因不是文件写错了,而是插件压根没加载这个文件。VSCode 的 esbenp.prettier-vscode 插件默认只认自己配置项,不会自动扫描项目根目录下的 .prettierignore。
- 必须显式设置
prettier.ignorePath为.prettierignore(字符串值,不带引号) - 文件必须放在工作区根目录,不是子文件夹,也不是用户主目录
- 插件版本
≥ 10.0.0才完整支持该功能;老版本即使设了也无效 - 改完设置后必须重启 VSCode 窗口(
Developer: Reload Window不够)
.prettierignore 的路径写法和常见错误
它用的是类似 .gitignore 的 glob 语法,不是正则,也不支持 ./ 前缀或相对 ignore 文件位置的路径——所有路径都相对于工作区根目录。
-
dist/✅ 忽略整个目录(结尾斜杠是关键) -
**/*.d.ts✅ 忽略所有层级的声明文件 -
src/**/test-*.js✅ 忽略src下任意深度中以test-开头的 JS 文件 -
node_modules❌ 可能只忽略同名文件,不是目录;应写成node_modules/ -
./src/index.js❌.和/开头都会被忽略,Prettier 不识别这种写法
保存时还在格式化被 ignore 的文件?检查格式化器是否被劫持
VSCode 可能根本没调用 Prettier,而是用了别的工具——比如 ESLint 自动修复、TypeScript 内置格式化器,或者你设置了 "editor.formatOnSave": true 但没指定 defaultFormatter。
- 右键编辑器 → “Format Document With…” → 确认当前默认 formatter 是
esbenp.prettier-vscode - 在设置里搜
editor.defaultFormatter,确保对应语言(如[javascript])设为esbenp.prettier-vscode - 关掉
eslint.autoFixOnSave,或改用eslint.codeAction.onSave.fixAll并确保它和 Prettier 规则兼容 - 检查右下角语言模式是否匹配(比如
.vue文件需 Prettier 支持 Vue 解析器)
想临时格式化一个被 ignore 的文件怎么办
不需要删或注释 .prettierignore,直接命令行强制走一遍就行:
prettier --write --ignore-path .prettierignore src/some-file.ts
或者加 --no-ignore 跳过所有 ignore 规则:
prettier --write --no-ignore dist/bundle.js
注意:这些命令只影响当前执行,不影响 VSCode 保存行为;它们适合 CI、发布前校验或调试 ignore 规则是否真生效。
最容易被忽略的一点是:VSCode 的 prettier.ignorePath 设置只对“保存时格式化”和“Format Document”生效,对右键菜单里的其他 formatter 完全无感——所以务必确认你正在用的确实是 Prettier,而不是另一个名字相似的扩展。











