Biome 迁移后不报 == null,补核 eqeqeq 的空值选项
Biome 2.5.15 迁移 ESLint eqeqeq 时丢失空值比较要求。明确 noDoubleEquals 的 ignoreNull,核对 2.6.2 正式修复及业务空值语义。
把 ESLint 迁到 Biome 后,x == null 不再提示,普通 a == b 仍会报错。若旧配置只是 eqeqeq: 'error',而迁移结果只有 noDoubleEquals: 'error',两边并没有保留相同的空值比较规则。
Biome 2.5.15 的 ESLint 迁移会丢失这部分选项。ESLint 默认的 eqeqeq always 会报告 == null;Biome 的 noDoubleEquals 默认允许与 null 的宽松比较。迁移成功、配置可解析,并不证明规则语义相同。
把 ignoreNull 明确写出来
例如旧 ESLint flat config 中有:
export default [{ rules: { eqeqeq: 'error' } }];
要保持这项默认要求,已有 Biome 配置里的对应规则应使用:
{
"linter": {
"rules": {
"suspicious": {
"noDoubleEquals": {
"level": "error",
"options": { "ignoreNull": false }
}
}
}
}
}
把这些键合入现有配置,不要覆盖其他规则。ignoreNull: false 控制是否报告空值宽松比较,不会替你重写业务分支。
如果原 ESLint 配置明确使用了 ['error', 'always', { null: 'ignore' }],保留 null 例外才是原意;不能给所有迁移项目机械加 false。使用 smart 的项目还应逐项核对 typeof、字面量等例外,不能把两条规则看作选项完全一一对应。
用正式修复重迁移时保留现有改动
Biome 2.6.2 的正式发行记录已明确包含保留 eqeqeq 空值选项的迁移修正。仍准备迁移的项目可以先评估升级,再在保存原配置的工作区运行迁移、检查 diff。已经迁移并手工调整过配置的项目,不宜直接整份重跑覆盖;针对缺失选项补齐通常更容易审查。
即使需要调整业务代码,也不能把 x == null 无条件换成 x === null。前者同时匹配 null 和 undefined,后者只匹配 null;要保留原语义,应先确认变量的类型与两个空值是否都可能出现。规则要求和业务行为要分别审查。
验收时至少放入普通宽松相等、与 null 比较、严格相等三种代码,对照旧 ESLint 的实际生效配置查看诊断;再覆盖原来有意允许的例外。应确认诊断重新出现或保留例外的原因符合迁移目标,而不是为了让数量相同顺手改掉业务逻辑。


