手动依次发布 core 和 ui,脚本先跑了 ui,registry 返回 404 No matching version found for @acme/core@1.5.0,ui 卡在半发布状态。第一次遇到会往复杂处想,其实漏掉的多是个小前提。
pnpm -r publish --access restricted npm view @acme/core@1.5.0 version npm publish --workspace @acme/ui
包之间的依赖是精确版本,被依赖的版本没上架时安装方解析不到。npm 不会替你排拓扑顺序,脚本按目录顺序执行就会撞上。这一点先确认清楚,后面就不用反复试。
「发布顺序」相关的日志我一般连着看前后五分钟,单看一条报错经常判断不出是哪一步失败。新版本先放一台机器上跑一天再全量,问题一般在这段时间暴露。
备份不是备了就行,恢复一次才算数,很多备份文件打开才发现是空的。接口问题先分清是没发出去、发出去了没收到,还是收到了处理失败。
具体做法是,用 pnpm -r publish 让它按依赖拓扑排序;或先发底层包 等 registry 可查再发上层;发布脚本里加一步 npm view 确认依赖版本已存在;失败时先补发依赖包 再重跑上层发布。
改完照着核一遍,发布日志里 core 在 ui 之前完成 ui 安装时能解析到 1.5.0。
