438 - 《Mako 开发日志(9) - Less 提速》

发布于 2024年5月10日

注:Less 提速方案由团队同学 @无玄 发起和实现。

1、由于历史原因,蚂蚁的中台和无线项目都在大量使用 Less。虽然 Mako 基于 Rust 重新实现了构建工具,但 Less 并无 Native 实现,这意味着他只能跑在 Node 下。基于 木桶原理,Less 很可能会成为我们构建最慢的一环。

2、我们也曾想过用 Rust 重写,rfc 写完后,发现 Less 有一些进阶用法,比如支持在 Less 里使用 js 表达式,这意味着需要在 Rust 里支持 js 表达式,难度一下子上去了。而 antd 用 less 用了大量 less 的高级功能,我们不可能先搞个简单的版本,然后慢慢迭代。所以,出于 ROI 考虑,暂时放弃。

3、我们最终的方案是在 Node 侧利用 worker 提速。因为 Less 编译是无状态的,没有上下文和复杂的数据结构传递,所以放 worker 里做应该是比较合适的,不清楚为啥之前 webpack 的优化方案里没这么做。先看效果,我组织了一个大量 Less 文件的仓库,和 Rust 构建器

内容预览已结束

此内容需要会员权限。请先登录以查看完整内容。