在今天,尤雨溪的 Rolldown 项目中提交了一个 Commit,简述了为什么不基于 Rollup,而是从零开发 Rolldown。参考:docs: add section on why not incrementally improve rollup
Vite 站在巨人的肩膀上,它的成功很大程度上要归功于 Rollup。我们与Rollup当前的维护者 Lukas,有着良好的合作关系,并对他的出色工作表示高度赞赏。在开始开发 Rolldown 之前,我们与 Lukas 取得了联系,确保他知道并同意我们的计划。我们达成的共识是,同时进行增量改进(由 Lukas 负责)和从头重新实现(由我们负责)是有益的。
我们的观点是,考虑到 JavaScript 的单线程特性和打包工具的复杂性,通过渐进式的改变极其不可能实现我们追求的性能水平。部分将组件移至Rust带来的性能提升往往被 Rust 和 JavaScript 之间数据传递的成本所抵消,正如 Rollup 4 采用基于 Rust 的 SWC 解析器所展示的。为了实现最佳性能,整个解析/转换/代码生成流程需要在本地端完成,并尽可能并行化。这只有通过从头开始的实现才是可行的。