我把我的 monorepo 迁移到 Bun,这是我的真实反馈

我最近把 Intlayer(一个 i18n 解决方案) ------一个由多个应用组成的 monorepo(Next.js、Vite、React、design-system 等)从 pnpm 迁移到了 Bun。

总结(TL;DR):如果早知道,我可能不会这么做。

我以为只需要几个小时,结果花了大约 20 个小时。

我被 Bun 的 "一体化" 承诺和令人印象深刻的性能基准吸引。

我提示、我 cursor、我的包构建飞快,太棒了。

然后我提交(commit)......遇到了第一个问题。

Husky 崩了

原来你需要手动在 commit-msg 和 pre-commit 文件中添加 Bun 的路径。

没有任何官方文档提到这一点。

我不得不在 GitHub issue 里深挖才找到解决办法。

接下来是 GitHub Actions。

修改 → 推送 → 等待 → 检查 → 修复 → 重复 × 15 次。

我花了 3 个小时调试缓存问题。

终于,一切构建通过。是时候运行应用了......或者我以为是。


后端(Backend)

问题 1:

使用 express-rate-limit 导致所有请求都失败。

问题 2:

我的应用使用了 express-intlayer,它依赖 cls-hooked 来处理上下文变量。

而 Bun 不支持 cls-hooked。

解决方案: 用 Bun 构建,用 Node 运行。


网站(Website)

问题 1:

本地构建正常,但在使用官方 Bun 镜像的容器中构建时,会无限卡住、CPU 占满、服务器直接崩溃。

我不得不回退。

我找到一个 2023 年的 GitHub issue,建议的解决方案是:使用 Node 镜像并手动安装 Bun。

问题 2:

我的 design system 组件开始报 "module not found" 错误。

Bun 仍然在包路径解析上存在问题。

我不得不替换掉所有 createRequire 的调用(为了解决 CJS/ESM 兼容问题),并将 require 函数手动传递给每个需要它的函数。

其他错误就不一一赘述了。


经过很多小时的折腾,我终于让一切都跑起来了。

那么 CI 性能提升如何呢?

项目 迁移前 迁移后
后端 CI/CD 5 分钟 4 分 30 秒
服务器 MCP 4 分钟 3 分钟
Storybook 8 分钟 6 分钟
Next.js 应用 13 分钟 11 分钟

在运行时方面,我的 Express 和 Next.js 应用仍然在 Node 上运行。


结论

如果你在想 "现在是迁移到 Bun 的时候了吗?"

我的回答是:

它可以用 ,但对于复杂场景来说还不够成熟。

尽管如此,我依然非常看好 Bun 的潜力,也很好奇它未来会如何发展。

你在迁移过程中有没有遇到类似的问题?

相关推荐
小天源4 小时前
智叟云集系统整体架构解析:多语言 API 接入、异步监控与本地化部署
架构·数据采集·数据中台·ai监测系统·geo数据监测
真上帝的左手5 小时前
10. 软件设计&架构-分布式文件存储系统
分布式·架构·应用架构
弈栈录5 小时前
大模型服务抽象:兼容 OpenAI、通义千问与本地模型
java·后端·架构
const_qiu5 小时前
第二章 2.6:初始化 NestJS 服务端 —— TypeScript 后端框架体验
前端·javascript·typescript
CCblandy6 小时前
一致性哈希到底省了多少搬迁?本机实测 3 轮:取模 6→7 搬 85.8%,V=128 只搬 14.3%,虚拟节点太少会被倾斜骗
后端·python·云原生·性能优化·架构
miofly6 小时前
GitHub 今日推荐|sweety-handdraw-video:文章转手绘口播视频
javascript·开源·github
code_slave(码畜)6 小时前
微服务架构落地:OpenFeign 服务远程调用 + 线程池隔离架构实战 —— 超时控制、重试机制、线程池隔离,防雪崩
spring boot·spring cloud·微服务·云原生·架构·openfeign
小天源6 小时前
智叟云集定时采集与消息推送架构——实现可恢复的订阅通知流程
架构·sass·权限管理·多租户·服务商 api·ai采集
Shaoshing6 小时前
存储引擎与架构
java·开发语言·架构
whyutianict_vv6 小时前
AI 大模型技术架构解析:从推理链路到训练流程
人工智能·ai·架构·开发