Biome可完全替代ESLint+Prettier,但需禁用ESLint/Prettier插件、在工作区根目录放置启用formatter/linter的biome.json,并配置editor.defaultFormatter为biome.biome。

Biome 能直接替代 ESLint + Prettier,但不是“装上插件就生效”,它对配置位置、插件共存、格式化接管权极其敏感——多数人卡在 biome.json 没放对地方,或没关掉 dbaeumer.vscode-eslint。
VSCode 里 Biome 插件不显示、不报错、也不格式化?
这是最典型的静默失效:插件已安装,但 VSCode 根本没加载 Biome 的语言服务器。根本原因是项目根目录缺少有效配置文件。
-
biome.json或biome.jsonc必须放在你打开的 VSCode 工作区(workspace)根目录下,src/biome.json、packages/app/biome.json都无效 - 文件必须有至少一个启用项,比如
"formatter": { "enabled": true },空文件或全false也会静默退出 - 首次打开项目时,状态栏右下角可能短暂显示 “Loading Biome…” —— 这是它在解压并启动 Rust 编译的 CLI 二进制,别手动关掉弹窗或重装插件
- 确认 VSCode 底部状态栏右下角出现了
Biome字样,没出现 = 没加载成功
保存代码后还是走 ESLint 或 Prettier?
VSCode 默认按扩展优先级抢 Format Document 控制权。Biome 插件不会自动覆盖,必须手动切断旧链路。
- 彻底禁用
dbaeumer.vscode-eslint插件(不是“禁用工作区”,是点击齿轮 → “Disable”) - 卸载或禁用
esbenp.prettier-vscode—— Biome 的格式化管道和 Prettier 不兼容,共存会导致保存卡顿、缩进错乱 - 检查全局或工作区
settings.json,删掉所有形如"editor.defaultFormatter": "dbaeumer.vscode-eslint"的配置 - 设为
"editor.defaultFormatter": "biome.biome",且确保"editor.formatOnSave": true - 如果项目含多种语言(如
.ts和.mdx),需额外配语言级覆盖:"[typescript]": { "editor.defaultFormatter": "biome.biome" }
规则不生效、报错和 ESLint 对不上?
Biome 的规则名、默认开关、语义细节都和 ESLint 不同源,不能假设 no-console 这类名字能直接迁移。
-
no-console在 Biome 里叫useConsole,且默认off;要启用得在biome.json里显式打开:"useConsole": "error" -
eqeqeq对应useStrictEquality,但对null == undefined的处理逻辑不同,测试用例可能突然失败 - 推荐先用
"recommended": true,再按需覆盖单条规则,避免手动列全 100+ 条规则 - 规则文档以官网为准:
https://biomejs.dev/linter/rules/,搜索框输入 ESLint 规则名常能跳转到对应 Biome 规则页
团队协作时怎么保证本地和 CI 行为一致?
Biome 的 CLI 是唯一真相源,VSCode 插件只是它的 LSP 封装。本地配置再准,CI 里没跑 CLI 就等于没守门。
- CI 脚本里必须调用
npx @biomejs/biome check .和npx @biomejs/biome format --write .,不能只信编辑器 -
biome.json必须提交进 Git,且禁止用.gitignore忽略它——有人会误加**/biome.json导致子包失效 - 如果项目用了 pnpm workspace 或 Turborepo,确保
biome.json在 workspace 根,而非各 package 内重复配置 - 多人开发时,VSCode 设置里禁用
editor.formatOnSave全局开关,改用工作区设置(.vscode/settings.json),避免个人习惯污染统一行为
最容易被忽略的是:Biome 的规则开关和错误等级("off"/"warn"/"error")必须写在 biome.json 的 linter.rules 下,而不是顶层字段;漏掉一层嵌套,整条规则就静默丢弃。


















