首页
学习
活动
专区
圈层
工具
发布

npm升级炸项目?试试这个AI神器:bumpgen!

说实话,搞前端的兄弟们,有谁没在升级依赖的时候踩过坑?

你用着用着 React,好好的,某天来了个 Renovate 或 Dependabot PR,把你整个 package.json 全部 bump 了一轮。你一激动合上 PR,结果?线上直接炸了!

我跟你讲,这种“升级即背锅”的戏码,我见得多了。有次我们项目一口气从 React 16 升到 18,Webpack、TS、各种 loader 一起飞,结果前端团队连夜“加班福报”,最后干脆 revert 回最初的版本,从此立下规矩:升级依赖,必须祭天。

不过最近刷 GitHub,刷到一个神器,真让我眼前一亮——**bumpgen**。

这玩意儿,说白了就是一个“升级依赖 + 自动修复”的工具,用 AI 帮你搞定升级后代码炸掉的问题。

我一开始也抱着怀疑态度:啥?AI 自动修复?这不是又一个“用 GPT 写代码”的智商税吗?

结果一看实现细节,我去,这项目不简单啊——它是真的动脑子了,不是那种“copy prompt,调 GPT,然后胡乱改代码”的小打小闹。

bumpgen 是怎么搞的?

来,我给你捋一遍它的骚操作流程:

构建项目,收集错误信息bumpgen 会先尝试 build 你的项目,收集所有 TS 编译报错、eslint 报错啥的,搞清楚“哪里炸了”。

TS AST 分析 + ts-morph + DAG 变更图这一步是亮点!它用 ts-morph 解析你的源码,生成抽象语法树(AST),然后构造一张“变更图”——用 DAG(有向无环图)来标记哪些代码需要改、改了之后影响哪里。

调用 GPT-4 Turbo 自动修复然后它把这些变更节点打包成 prompt,丢给 GPT-4 Turbo,让它“聪明地”帮你写 patch。而不是那种“全文瞎改”,而是基于具体 AST 节点做“有的放矢”的局部修改。

生成 PR,集成 CI/CD 自动测试最后它会生成一个 GitHub Action,自动帮你提交 PR,跑一轮 build 和测试流程,能不能上线,一看 CI 就知道。

整个流程看下来,我的内心就俩字:“牛逼”

这不就是我做梦都想要的“升级不翻车”神器吗?

实战体验:从 React 17 升到 18

我就不藏着掖着了,我们最近刚好把一个老项目从 React 17 升到 React 18。

最开始直接手动改,改了一堆ReactDOM.render()成createRoot(),然后发现一堆第三方库不兼容,还得看 changelog、看 issue,看得我脑仁疼。

后来试了 bumpgen,整一个流程就跟在看魔术表演一样:

它发现我们用的ReactDOM.render老 API,直接定位 AST 位置,建议替换成createRoot,同时自动引入react-dom/client

对老组件里的findDOMNode调用,它给出了替代方案,还根据我们用的 MUI 组件写了 patch

连 tsconfig.json 的改动都自动补全了!

虽然不是 100% 修好,但 80% 的重复性劳动直接甩手给 AI,我只需要 review 它改的 patch 和跑测试,体验简直了!

有多强?也不是万能

当然了,也别当这玩意儿是银弹。

它也有不少限制:

只支持 TypeScript / TSX,Java、Python 那些想都别想,目前还没人给提 PR 支持

不是行为级别的修复,也就是说如果某个库升级后逻辑变了,它是不知道你代码该怎么改的

复杂的 peer dependency(比如 octokit core + plugin retry 这种组合拳)它还处理不了

重型框架升级(比如 Vue 2 Vue 3),它容易直接跪

说白了,它是个“聪明的编辑器”,不是“产品经理 + 架构师 + CTO”三合一。

你让它修语法、补类型、处理 breaking change 还行,你让它理解你业务逻辑、改需求、评估风险,那它就该辞职了。

对 AI 工具的反思

我现在越来越相信一点:AI 不是要替代你写代码,而是要替代你那些重复搬砖的部分。

像 bumpgen 这种工具,它最大的价值不是让你“全自动升级”,而是降低了“开始升级”的门槛。

以前大家一听升级 TS、升级 React,就觉得是要大搞工程,leader 不批、产品不敢动,最后拖到框架都 deprecated 才开始着手。

但现在,有这种工具帮你自动找出问题、自动改一部分代码,剩下的你只要 review 和测试——那很多小团队、中型项目的升级,就能主动起来了。

而不是像以前那样,“我们再撑一撑,看年底有预算了再搞”。

展望一下:AI + AST,真有前途

我个人特别看好这类 AST + AI 的工具链,bumpgen 只是一个开始。

你想想,如果有一天:

Python 的2to3也能变得智能化,不是死匹配

Java 的版本升级也有 AST 补丁助手

Golang 的 breaking change 也能自动提示修复建议

那我们这些苦逼程序员,真的可以从“改 bug 搞升级”这种机械劳动里解放出来,去思考更多有价值的事。

当然,理想很丰满,现实还得慢慢来。

如果你跟我一样,常年在“升级即踩坑”的阴影里挣扎,不妨试试 bumpgen。

它不是神药,但一定能帮你省下不少 debug 的时间。

谁不想写点新业务,谁愿意天天在yarn upgrade后面擦屁股?

兄弟们,用完记得点个 Star,作者搞这么细致真的不容易。下次别再吐槽 AI 不靠谱了,至少 bumpgen,它是真正想干点实事的!

该项目开源地址在这里:

github.com/xeol-io/bumpgen

  • 发表于:
  • 原文链接https://page.om.qq.com/page/OQtHGmUlTkvykf7ScdqBclHg0
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

相关快讯

领券