node bin/gen.js --module user
# 检测到已存在 跳过 3 个文件 使用 --force 覆盖
node bin/gen.js --module user --force --backup

同事重跑生成器补字段,user.service.ts 里手写的 200 行逻辑被覆盖,git diff 里只剩模板内容,回收站里也没有。先别急着动参数,把报错原文和时间点记下来,顺序反了容易白折腾。

原因不复杂,写入前用 writeFile 直接覆盖,没有检测目标是否存在。--force 参数默认是 true,命令行历史里一直带着。

这次卡住的地方就在「生成覆盖已有文件」这一环,单独把它拎出来验证,别和其他改动混在同一次发布里。改动写完就同步给同事,下一个人踩同一个坑,成本还是你的。

验证用真实数据走一遍,测试数据太干净,边界情况根本碰不到。能分两步做的操作就别合成一步,中间看一眼返回值,出问题好判断。

处理上按这个顺序:写入前判断文件存在 默认跳过并打印提示;覆盖必须显式带 --force 并且要求二次确认;覆盖前把原文件改名加时间戳后缀;生成结束打印新增 跳过 覆盖三组清单。

改完只确认一件事:重跑生成器时已有文件被跳过 加 --force 后原文件出现在 .bak 目录里。

作者 9823189