Shift+Option+F(macOS)或Shift+Alt+F(Windows/Linux)仅格式化当前文件,无法批量处理;批量格式化必须使用Prettier CLI命令行,如npx prettier --write "*/.{js,jsx,ts,tsx,css,scss,html,json,md}",并依赖.prettierignore过滤文件。

Shift + Option + F(macOS)或 Shift + Alt + F(Windows/Linux)只能格式化当前打开的文件,**不能批量处理整个项目**。真要批量格式化,必须绕过编辑器界面,走命令行 + Prettier CLI 这条路。
为什么不能直接用快捷键批量格式化
VS Code 的快捷键本质是触发「当前文档」的格式化动作,它不扫描目录、不递归匹配、不读取 .prettierignore——这些能力只在 CLI 层实现。常见误操作是:开一堆 tab,挨个按快捷键,结果漏文件、重复格式化、忽略配置、还容易卡死大文件。
- 快捷键调用的是 VS Code 内部代理,实际仍依赖你本地装的
prettier包,但只传单个文件路径过去 - 工作区里没打开的文件、
node_modules外的隐藏目录、被.gitignore排除但没进.prettierignore的文件,全都不生效 - 如果项目用
yarn pnp或pnpm,VS Code 插件有时根本找不到prettier二进制,但 CLI 在终端里能正常 resolve
npx prettier --write 是唯一可靠入口
这是目前最轻量、最可控、最兼容的批量方式,不需要全局安装,也不依赖 VS Code 设置是否正确。只要项目根目录有 package.json 和 node_modules/prettier(或能通过 npx 下载),就能跑。
- 基础命令:
npx prettier --write "**/*.{js,jsx,ts,tsx,css,scss,html,json,md}" - 加
--ignore-unknown避免遇到不支持的文件类型报错 - 加
--loglevel warn减少输出噪音,只显示真正被修改的文件 - 路径通配符必须用双引号包裹,否则 shell 可能提前展开,漏掉深层嵌套文件
- 首次运行建议先加
--check测试,确认哪些文件会变,再换--write
怎么避免把 node_modules 或生成文件也格式化了
.prettierignore 文件是唯一可信的过滤机制,VS Code 插件和 CLI 都认它,但路径写法有坑。
- 内容必须写相对路径,比如:
dist/、build/、node_modules/、**/*.min.js - 不要写绝对路径或带
./前缀,Prettier 会无视 - 如果用了
pnpm,注意node_modules/.pnpm是硬链接,node_modules/这一行可能不够,得加node_modules/.pnpm/** - CLI 默认不读
.eslintignore或.gitignore,想复用就得手动拼进 glob 模式,比如:"!(node_modules|dist)/**/*.ts"
如何集成到 VS Code 里一键触发(不用切终端)
不是靠快捷键,而是用 tasks.json 把 CLI 封装成任务,再绑定快捷键或右键菜单。
- 在项目根目录建
.vscode/tasks.json,内容包含一个shell类型 task,command设为npx prettier --write,args写好 glob - 加
"isBackground": false和"problemMatcher": [],确保执行完才退出 - 保存后按
Cmd + Shift + P→ 输入Tasks: Run Task→ 选你命名的任务 - 进「键盘快捷方式」搜
workbench.action.terminal.runActiveFile,可自定义快捷键绑定到该任务 - 别把命令塞进
launch.json——那是调试用的,不适用
.prettierrc 却没同步给所有人**。这些细节不显眼,但每次格式化出岔子,八成栽在这三处。


















