rome 在 vscode 中默认不工作,因其无官方扩展且不提供 lsp 格式化服务,无法注册 documentformattingeditprovider;需通过任务或快捷键调用 cli 实现格式化。

Rome 不是 VSCode 内置支持的格式化工具,也**没有官方 VSCode 扩展**;直接在设置里选 rome 作为 editor.defaultFormatter 会失败,保存时不会触发格式化。
为什么 Rome 在 VSCode 中默认不工作
Rome 是一个独立的、自包含的 JavaScript/TypeScript 工具链,它不依赖 ESLint 或 Prettier,也不提供 Language Server Protocol(LSP)兼容的格式化服务。VSCode 的格式化能力依赖于扩展注册的 DocumentFormattingEditProvider,而 Rome 官方尚未发布能提供该能力的 VSCode 插件。
常见错误现象包括:
- 保存文件后无任何格式变化,
editor.formatOnSave像没启用一样 - 手动执行
Format Document With...时列表里找不到Rome - 在
settings.json中硬写"editor.defaultFormatter": "rome",VSCode 报错或静默忽略
目前可行的两种集成方式(2026 年实测有效)
想在 VSCode 中用 Rome 格式化代码,只能绕过“原生格式化器”机制,改用命令行 + 任务或快捷键绑定。以下两种方式都需本地安装 Rome CLI:
- 运行
npm install --save-dev rome或pnpm add -D rome,确保项目根目录有node_modules/.bin/rome - 确认
rome format --write .在终端中能正常运行并修改文件
方式一:用 VSCode 任务(Task)绑定 rome format --write
- 在项目根目录创建
.vscode/tasks.json - 填入如下内容(注意
group设为build,方便快捷键触发):
{
"version": "2.0.0",
"tasks": [
{
"label": "rome: format current file",
"type": "shell",
"command": "${config:terminal.integrated.env.windows?.NODE_OPTIONS || ''} npx rome format --write ${file}",
"group": "build",
"presentation": {
"echo": true,
"reveal": "never",
"focus": false,
"panel": "shared",
"showReuseMessage": true,
"clear": false
},
"problemMatcher": []
}
]
}
之后按 Ctrl+Shift+P → 输入 Tasks: Run Task → 选 rome: format current file 即可格式化当前打开的文件。
方式二:用快捷键绑定(推荐)
- 打开 VSCode 快捷键设置(
Ctrl+K Ctrl+S) - 点击右上角「打开键盘快捷方式(JSON)」图标
- 添加如下条目(绑定到
Alt+Shift+F,避开默认的Shift+Alt+F):
[
{
"key": "alt+shift+f",
"command": "workbench.action.terminal.runActiveFile",
"args": {
"text": "npx rome format --write ${file}"
}
}
]
⚠️ 注意:workbench.action.terminal.runActiveFile 实际是“在终端运行当前文件”,这里属于 hack 用法——它会把 text 当作命令执行,所以本质是新开终端行并运行 npx rome...。
与 Prettier/ESLint 混用的风险点
Rome 的格式规则与 Prettier 不兼容,且 Rome 自带 lint 功能(rome check),因此不要同时启用 editor.formatOnSave + Prettier + Rome。容易出现:
- 保存时 Prettier 先改一遍,Rome 再改一遍,造成来回抖动
-
rome check报出的格式问题,其实是 Prettier 强加的风格(如分号、尾逗号),和 Rome 默认规则冲突 - VSCode 的 Problems 面板显示重复或矛盾的警告(比如同一行既被 ESLint 标红又被 Rome 标黄)
若团队已用 Rome,建议彻底移除 .prettierrc 和 esbenp.prettier-vscode 扩展,禁用所有相关设置,只保留 rome CLI 和上述快捷键/任务。
Rome 的配置完全靠 rome.json 控制,VSCode 不解析它;你改了 rome.json 后,必须手动触发一次格式化(比如保存后按快捷键),VSCode 才会应用新规则——它不会监听配置文件变更并自动重载格式器。











