把 packages/old-ui 改成 packages/design-system,package.json 里的 name 也换了,全仓 6 个包的构建仍报 Cannot find module '@acme/old-ui',搜代码却搜不到这个字符串。乍看像缓存或者权限的锅,追下去往往不是。
grep -rn '@acme/old-ui' --exclude-dir=node_modules . rm -rf node_modules pnpm-lock.yaml pnpm install npx tsc --noEmit
追下去是这么回事:依赖声明在 lockfile 和 node_modules 软链里还留着旧包名,改目录不会自动重写这些记录。tsconfig 的 paths 或 vite alias 里还有一条旧映射,构建按别名先命中。
「包重命名引用」相关的日志我一般连着看前后五分钟,单看一条报错经常判断不出是哪一步失败。接口问题先分清是没发出去、发出去了没收到,还是收到了处理失败。
偶发问题先统计频率,一小时几次和一天一次,查法完全不同。改完顺手把文档补一句,省得下次自己重新推一遍。
监控和日志的时间要对上,时区不一致会多绕很大一圈。临时改动用注释写上日期和原因,过两周自己都记不清为什么这么写。
具体做法是,全仓搜旧包名 包括 lockfile 和 tsconfig;删掉 node_modules 和锁文件重新 install;把引用方的依赖声明改成新包名;确认 tsconfig paths 和打包器 alias 里没有残留。
验收就看一点,全仓搜旧包名零命中 构建和类型检查都通过。
