IT加油站

用Codex自动升级Angular:三个项目实战

29浏览 • 18小时前 • 软件教程 • MA124583

原文:https://dev.to/gramli/i-vibe-coded-my-way-out-of-angular-upgrades-4fkh(作者 @gramli)

你是不是也讨厌升级 Angular 版本?反正我很讨厌。我手上有几个开源项目要维护,升级 Angular 大概是我最不想碰的维护任务。也正因如此,我的前端更新一拖就是很久。

不过现在有 AI 了,对吧?只要给清楚指令,它应该能处理这种活。于是我决定给 Codex 做一个——或者说 vibe 一个——Angular Update Skill。

创建这个 Skill

升级 Angular 并不只是跑一遍 ng update 这么简单,通常还有一堆事情要处理,所以我先写了一段 prompt,描述这个 skill 应该做什么:

  • 遵循官方的 Angular Update Guide。
  • 为这次升级单独创建一个 Git 分支。
  • 处理迁移脚本与依赖版本更新。
  • 验证一切仍然能构建、能正常工作。
  • 遵循与我手动升级时相同的最佳实践。

(相比之下,在 .NET 里升级 NuGet 包可真是简单太多了。)

Codex 生成了第一版 skill,出乎意料的是,它真的能跑。

嗯……准确说是本地能跑。

第一个问题:npm ci

把改动推到 GitHub 之后,CI 流水线挂了,报错如下:

npm ci can only install packages when your package.json and package-lock.json are in sync.


经典的 "works on my machine" 问题。skill 确实把 Angular 升上去了,但它没有验证干净安装是否也能通过。于是我加了另一个验证步骤:在认定升级完成之前,先跑一遍 npm ci。这样 agent 就能在 lock 文件的问题流到 CI 之前把它揪出来。

第二个问题:npm 发布

接着,在把我的 Angular 库发布到 npm 时又撞上一个问题:

npm error code E404
npm error 404 Not Found - PUT https://registry.npmjs.org/gramli-angular-mydatepicker - Not found


一开始这个报错基本没提供什么有用信息。排查之后我发现,发布环境用的是 Node.js 22 配 npm 10。

但根据 npm trusted publishing 文档,可信发布(trusted publishing)要求:

  • Node.js 22.14.0 或更高
  • npm 11.5.1 或更高

于是我再次更新了 skill:优先选择与目标 Angular 版本兼容的最新 Node.js LTS,同时确保 npm 版本满足任何发布要求。

第三个问题:skill 太大了

经过这一轮轮改进,skill 已经相当臃肿了。如果 token 额度宽裕,这可能无所谓,但我还想让它对那些 AI 预算有限的人也能用。所以我压缩了指令,删掉不必要的重复,只保留关键的验证步骤。主 skill 从 1,252 词降到 701 词,整个包大约缩短了 40%。

在真实项目上测试

当然,生成一个 skill 是一回事,真正拿它干活是另一回事。到目前为止,我已经在三个开源项目上用过当前版本:

其中 Angular 19 → 22 尤其有意思,因为它需要跨三个大版本做迁移。在 AuthApi 项目里,这次升级还顺带把 PrimeNG 换成了 Optimus UI,原因是 PrimeNG 的授权许可发生了变化。

这三个升级现在都已经合并。

三个项目之后

当前版本用起来相当不错,至少在我的这些小型项目上是这样。当然它并不完美:有些 Angular 项目比我的复杂得多,这个 skill 大概需要针对性调整才能胜任。但它已经实打实帮我升级了三个项目,过程中我也摸到了一些门道。

最爽的一点?我终于在一周之内就把 Angular 项目全部升完了,而不是又一次无限期往后拖。

开源社区里维护 Angular 项目的人不在少数,这套东西或许能帮到其他人,所以把它分享出来。想试用或者改进这个 skill 的话,地址在这里:

[Angular Update Skill(GitHub)](https://github.com/Gramli/Gramli.Framework/tree/main/src/angular-skills/angular-update)

原文:https://dev.to/gramli/i-vibe-coded-my-way-out-of-angular-upgrades-4fkh(作者 @gramli)

#Angular #Codex #AI编程 #前端开发 #自动化升级 #Angular 22