仓库里 18 个包,改一行 packages/utils 的日期格式化,CI 构建还是 12 分钟,18 个包依次执行,日志里没有一个 cache hit。乍看像缓存或者权限的锅,追下去往往不是。

npx turbo run build --filter='...[origin/main]'
npx turbo run build --dry=json
pnpm -r run build

追下去是这么回事:构建脚本是 pnpm -r run build,递归执行所有包,没有按依赖图裁剪。缓存没开或者输入声明不全,重复构建拿不到上次结果。

「单仓全量构建」相关的验证我通常做两遍,改完一次、隔天再看一次,确认不是临时生效。测试环境和线上的差别,往往就在版本号和那几行被忽略的配置上。

线上出问题先对时间点,跟发布、备份、任务执行的时刻排一排,能省掉一半功夫。日志级别临时调高可以,记得改回去,长期开着既占磁盘又掩盖真问题。

权限不要一口气开到最大,先加到够用再往上试,范围小才好收。

具体做法是,换成 turbo 或 nx 按依赖图执行 只跑受影响包;给每个包的 build 配好 outputs 和 inputs;CI 挂载持久缓存目录 跨流水线复用;用 --dry=json 核对每次实际执行的项目数。

验收就看一点,单包改动构建从 12 分钟降到 2 分钟内 日志里未改动包显示 cache hit。

作者 9823189