Dprint 替换 Prettier 需三步:禁用 Prettier 自动格式化("prettier.enable": false)、显式绑定语言("[typescript]": {"editor.defaultFormatter": "dprint.dprint"})、确保 dprint CLI 可用且插件为官方版。

Dprint 能比 Prettier 快不少,但直接替换会格式错乱、保存不触发、甚至报 command 'dprint.format' not found 错误——核心问题不是装没装对,而是 VSCode 没认出它是“格式化器”,且默认没关掉 Prettier 的抢占逻辑。
为什么装了 dprint 插件后保存还是走 Prettier?
VSCode 格式化器有优先级:只要 prettier 扩展启用、且项目里有 .prettierrc 或 package.json 里含 prettier 字段,它就会自动接管所有支持语言的格式化,压根不查 dprint。
- 必须手动在工作区或用户设置里禁用 Prettier 的“自动格式化提供者”角色
- 在
settings.json中加这一条:"prettier.enable": false - 别只依赖插件开关——即使禁用了 Prettier 插件,某些旧版 VSCode 仍会读取配置文件并激活内置格式化逻辑
如何让 dprint 成为 TypeScript/JavaScript 的默认格式化器?
光靠插件识别不够,得显式声明语言绑定。VSCode 不会自动把 dprint 映射到 typescript 或 javascript,除非你告诉它:“这个语言,交给他。”
- 在工作区
.vscode/settings.json中写入:"editor.defaultFormatter": "dprint.dprint", "[typescript]": { "editor.defaultFormatter": "dprint.dprint" }, "[javascript]": { "editor.defaultFormatter": "dprint.dprint" } - 注意顺序:
editor.defaultFormatter是全局兜底,但语言专属设置([typescript])优先级更高,必须单独配 - 如果用了 ESLint + dprint 混合流程,别开
eslint.format.enable,否则 ESLint 会抢在 dprint 前格式化,导致二次污染
运行 dprint 命令时报错 command 'dprint.format' not found 怎么办?
这说明 VSCode 没加载 dprint 扩展的贡献点,常见于插件未激活、二进制路径异常或配置冲突。
- 检查是否安装的是官方插件:
dprint.dprint(发布者是 dprint),不是第三方仿制版 - 确认
dprintCLI 已全局可用:终端运行dprint --version应返回版本号;若不行,先npm install -g dprint或用curl下载二进制并加入$PATH - 重启 VSCode(不是重载窗口)——插件激活依赖完整启动流程,热重载常不生效
- 打开命令面板(
Ctrl+Shift+P),搜dprint,看是否有Dprint: Format Document选项;没有就说明插件根本没注册成功
格式化结果和 Prettier 不一致,是配置没同步?
不是“没同步”,是 dprint 默认规则和 Prettier 本来就不一样——比如对象换行、箭头函数括号、字符串引号等策略完全不同,硬套 Prettier 配置会失败。
- dprint 不读
.prettierrc,要用自己的dprint.json或dprint.toml - 推荐从
dprint init生成基础配置开始,再按需调:"json/indentWidth"、"typescript/quoteStyle"等字段名和 Prettier 完全不同 - 特别注意:dprint 对
prettier-ignore注释不识别,要改用// dprint-ignore,否则局部跳过会失效
真正卡住人的地方,往往不是不会装,而是以为“装完插件=能用”,结果 VSCode 在后台默默执行着另一个格式化器,还报错报得不明不白。配的时候盯住三件事:Prettier 是否彻底退场、语言映射是否写进 [typescript] 这种块里、CLI 是否真能被 VSCode 进程调到。


















