在 config-eslint 包里把 no-console 从 warn 调成 error,推上去之后 CI 里 20 个包全部失败,报错 1400 多条,连没改过的老包也红了。日志里能对上时间点,这种反而好排。
共享配置被所有包 extends,一处规则变更会立刻作用到全仓,各包历史代码的存量问题一次性暴露。配置包版本用 workspace:* 时,CI 装的是本地最新代码,没有灰度余地。这一点先确认清楚,后面就不用反复试。
pnpm -r exec eslint . --quiet -f json -o eslint-report.json pnpm --filter @acme/config-eslint publish pnpm -r up @acme/config-eslint@latest
「共享配置影响全仓」确认了原因之后,改动尽量只碰那一处,顺手改的东西后面最容易出问题。线上出问题先对时间点,跟发布、备份、任务执行的时刻排一排,能省掉一半功夫。
日志级别临时调高可以,记得改回去,长期开着既占磁盘又掩盖真问题。
处理上按这个顺序:共享规则变更单独发一个 PR 先只改配置包版本号;用 eslint --quiet 先统计各包存量错误数量;分批把包升级到新配置 每批修完再动下一批;对老包暂时用 overrides 降级 给出清理期限。
结果对不对很好判断,配置包升级后 CI 报错数量从 1400 降到 0 各包分批完成而不是同一天全红。
