当前文档列出了一些Rspack将支持的重要功能,其中一些已经进行中,而另一些将在Rspack的未来版本中实现。
最后更新时间:2024-10
Rspack 将每 2-3 个月发布一个次要版本,每个版本都包含重要的新功能和改进。
我们正在开发一种新的增量构建实现,它将显着提高 Rspack 的 HMR 性能。
Rspack v1.1 将以实验性的方式支持此功能,并将继续在未来版本中对其进行优化,直到默认情况下启用它。
持久缓存可以在多次构建期间缓存构建工件,显着减少后续构建的时间,尤其是在大型项目中提供显著的性能提升。
我们正在为 Rspack 实现持久缓存功能,并计划在 Rspack v1.2 中发布实验性支持。
Rspack 缓存功能的演进路径遵循内存缓存、持久缓存和可移植缓存的顺序实现。目前,Rspack 已经实现了内存缓存,并且正在实现持久缓存。
之后,我们计划继续实现可移植缓存。这意味着 Rspack 的构建缓存不仅将是持久的,而且还可以在环境和机器之间移植。这将帮助团队更好地利用缓存并为分布式构建奠定基础。
由于 webpack 包含大量的 API,我们将根据社区的反馈,优先支持最常用的加载器和插件。
目前,高级工具可以使用 JS API 集成 Rspack,这提供了良好的可扩展性。但是,Rust 和 JavaScript 之间的通信开销限制了 Rspack 的性能。我们还提供了 SWC Wasm 插件 以支持扩展,但其性能仍然比原生语言慢。为了为高级工具提供更灵活的集成选项和更好的性能,我们计划公开 Rspack 的 Rust API 以进行集成。
ESM 是 JavaScript 模块的标准。我们目前正在改进 Rspack 和 webpack 对 ESM 输出的支持,并基于 Rspack 创建了一个名为 Rslib 的库构建工具。这将允许开发人员在构建 npm 包时更好地利用 ESM 的静态分析和树摇。
在字节跳动,我们已经基于 Rspack 以实验性的方式支持 RSC (React Server Components) 并在一个大型 Web 应用程序中验证了它。在未来,Rspack 将为 RSC 提供一流的支持,并提供更多核心功能,以使 RSC 更易于实施。例如,Rspack 现在支持 layer 功能,允许在单个运行中为多个环境构建。
目前,当 Rspack 处理 TypeScript 模块时,它首先通过加载器将其转换为 JavaScript,然后再进行进一步处理。这提供了灵活性,但也阻碍了对构建输出的进一步优化。例如,开发人员需要使用 enum
而不是 const enum
,但 enum
很难像常量一样进行优化。在未来,我们计划在 Rspack 中将 TypeScript 视为一等公民,利用 TypeScript 的静态信息来提供对构建输出更高级别的编译时优化(例如 基于类型的属性重命名)。