umi
umi copied to clipboard
[Feature Request] 支持rspack
Background
目前我们很多项目都接入了umi,但是webpack对于一些超大型项目还是力不从心,是否有考虑支持rspack呢。
可以增加一个@umijs/bundler-rspack ?
我正在做一些类似的工作,大家有多少人需要呢?
目前的一些信息:
-
rspack 出了也很久了,最早 rspack 刚开源的时候,就有尝试用 rspack 构建的想法,那个时候 rspack 还不支持 swc 插件,大部分社区 webpack 插件不支持,同时 umi 的自定义内容比较多,比如 babel 插件、webpack 插件等,之所以 umi 可以快速的开始一个项目和一键开关各种功能,离不开加了很多自定义的东西,而 rspack 那个时候还不支持,所以当时就没有继续做这个的想法了,因为那个时候就算勉强做了也只是一个超大号阉割版 umi ,不如直接用 rspack cli 自己配置去构建。
-
后续蚂蚁内自己做了 rust 的构建工具 mako ,因为 2022 ~ 2023 年几乎所有大公司都在竞相开始 rust 的项目,mako 就是一个专门针对 umi 使用到的功能做的一个针对性的打包器,不是像 rspack 、farm 等那种通用为目的的,umi 用到了啥就做啥,专门为 umi 构建加速服务的 rust 构建工具,目前还没开源,前期分享见:Rust 在前端构建高性能前端打包工具 ,近年 5 月份应该还有一次公开分享:Rust 构建工具在蚂蚁的研发和落地 。
综合以上信息,如果你能局限在你用了哪些 umi 的功能,在一个满足自己需求的范围内,省略阉割掉那些不需要或者 rspack 还不兼容的功能之后,我理解是可以做一个用 rspack 构建的 umi 的;但 umi 目前来看是不会官方提供 rspack 集成,因为针对 umi 的 rust 构建工具已经在做,另外作为一个企业级的产品来提供的话,应该尽可能保持更多的可控、可拓展,功能尽可能保持完整,提供阉割版这种是不好的。
关于 mako 后续应该会开源公开可用,届时可以试试看,我不是蚂蚁的,对这里面了解不多。
另外:
-
我没试过 rspack 现在的 swc plugin 支持怎么样,但 swc 的 breaking change 和版本迭代太快,经常写的 swc 插件就用不了了要去频繁迭代,这是非常烦的,同时 wasm 的性能也是不如
.node
一体的,所以 swc 插件不是一个好的拓展方向,还是要把 swc 集成进来做一个一体化的 rust 构建器比较好。 -
如果你只是为了提速的话,像现代的构建工具,比如 swc / esbuild 已经可以用 loader 仅介入转译阶段,在转译阶段提速非常多了,构建缩短在一分钟或者几分钟都是没问题的,这已经很快了,你可以开启
srcTranspiler: 'swc'
用 swc 转译试试(有问题可以反馈);如果你要用全流程都是 rust 的打包工具,比如 rspack / rolldown 等,那就是在一分钟内去内卷了,其实一分钟和几分钟是一样的,因为通常情况也不会有多少超大项目,很多时候 cicd 里启动个容器或者拉取镜像、拉取源码等其他流程花费的时间都远远大于项目构建了,在分钟里内卷没太大的意义。
@xierenyuan 你们现在有用 rspack 做一个阉割版支持的想法吗,其中去局限功能范围,并用 rust 开发一定量的 swc 插件我理解是需要的。
@xierenyuan 你们现在有用 rspack 做一个阉割版支持的想法吗,其中去局限功能范围,并用 rust 开发一定量的 swc 插件我理解是需要的。
私聊
try mako: {}
试试 mako 吧,官方没有 rspack 的计划,或者私下的自己可以搞。
没有官方的人出来回应一下这个 feature 需求吗?