改了按钮文案重新构建,dist 里还是旧字符串,日志显示 cache hit 命中一个三天前的 hash。手动删 .turbo/cache 再构建才正常。日志里能对上时间点,这种反而好排。
缓存键只覆盖声明过的输入,配置文件或环境变量不在 inputs 里时,改这些不会换 key,命中的还是旧产物。缓存目录在 CI 上跨分支共享,别的分支同 key 的结果被复用。这一点先确认清楚,后面就不用反复试。
npx turbo run build --force npx turbo run build --dry=json | grep hash rm -rf .turbo/cache
「turbo 缓存污染」排查到最后往往是很小的一处差异,前面那些复杂猜测可以先放一放。先做最小复现,能稳定跑出来的问题,排查成本会低一个数量级。
别只看报错的最后一行,往上看几行,真正的起因通常在上面。同类问题如果隔一段时间又出现,多半是某个定时任务或重启流程把改动冲掉了。
处理上按这个顺序:把构建相关的配置和环境变量补进 inputs;CI 缓存 key 里带上分支名或提交号;怀疑污染时用 turbo run build --force 跳过缓存验证一次;定期清理 .turbo/cache 里超过七天的条目。
结果对不对很好判断,--force 构建出的 dist 文案是新版本 正常构建的 hash 和上次不同。
