Bun 与 Rolldown
新运行时/打包器生态。
25 分钟
Bun 与 Rolldown
Bun 既是 JavaScript 运行时(对标 Node),也内置 包管理器、测试、打包——「一个二进制干多件事」。Rolldown 是用 Rust 重写的 Rollup 兼容打包器,Vite 未来可能用它统一 dev/prod 引擎。二者代表工具链 更快、更整合 的方向。
学习目标
- 知道 Bun 与 Node/npm 的能力重叠与差异
- 理解 Rolldown 在 Vite 路线图中的位置
- 评估「现在要不要换」的务实标准
Bun 是什么
bun install # 替代 npm/pnpm install
bun run dev # 跑 package.json scripts
bun test # 内置测试运行器
bun build ./src/index.tsx --outdir dist
| 能力 | Bun | Node 生态 |
|---|---|---|
| 跑 TS/JSX | 原生,快 | 需 ts-node / 先编译 |
| 包管理 | bun.lock | npm/Yarn/pnpm lock |
| 兼容性 | 高,但边缘 case 仍有 | 事实标准 |
| 生产部署 | 可行,Docker 镜像渐成熟 | 默认首选 |
务实建议:实验与新 CLI 工具可试 Bun;企业 Next.js monorepo 多数仍 Node + pnpm/npm,等团队与 CI 就绪再迁。
Rolldown 是什么
- Vite 团队主导,目标 Rollup API 兼容 + Rust 性能
- 长远:开发 esbuild、生产 Rollup 的双引擎 → 单引擎 Rolldown 简化配置与行为差异
- 现阶段:关注 changelog 即可,不必强行替换现有 Vite 配置
关联 ft-vite 与 ft-rollup——理解「为何又要新 bundler」:统一行为 + 提速。
与现有课栈的关系
- javascript-core 语法在 Bun 与 Node 上一致;模块解析细节查官方兼容表
- react-essentials / nextjs-essentials:Next 官方仍以 Node 为主;Bun 跑 Next 属进阶话题
- typescript-essentials:Bun 内置 TS 转译,但 类型检查 仍建议
tsc
何时跟进生态
- 个人 side project:可
bun create vite体验速度 - 库作者:关注 Rolldown 稳定后是否简化 dual-package 构建
- 团队项目:换运行时/锁文件 = 全链路变更——需与 、CI、部署一并评估