Rspack 1.7发布:2.0之前的最后一个1.x版本

Source: InfoQ - Frontend

Rspack是一个基于Rust的、旨在替代webpack的高性能Web打包工具。Rspack 1.7版本发布,这是在项目过渡到2.0版本之前,1.x系列的最后一个小版本。该版本专注于提升现有功能的稳定性和插件的兼容性。

Rspack 1.7引入了多项增强稳定性的改进,包括:增强SWC插件兼容性原生支持以字节形式导入资源,以及固化多项实验性功能。对于Web应用中动态导入的模块,该版本还引入了默认启用的懒编译。

Rspack 1.7的一个新特性是改进SWC插件兼容性。在以前的版本中,由于AST结构不断演变,SWC Wasm插件面临着高昂的升级成本,使得现有插件在SWC升级后会出现问题。为此,Rspack团队向SWC社区贡献了兼容性改进,包括采用cbor序列化方案来替代版本敏感的rkyv,并在AST中引入了用于枚举类型的Unknown变体,以提高容错性。从Rspack 1.7开始,SWC升级不大可能再破坏之前使用旧版本SWC构建的插件了。

Rspack现在原生支持Import Bytes提案,即以字节形式导入资源。开发者可以用Uint8Array导入资源,并使用TextDecoder进行解码,语法如下:

import fileBytes from './file.bin' with { type: 'bytes' };
const decoder = new TextDecoder('utf-8');
const text = decoder.decode(fileBytes);

从Rspack 1.7开始,在构建Web应用时,Rspack CLI针对动态导入模块默认启用懒编译。这一变化减少了初始构建中的模块数量,加快了开发服务器的启动速度。有特殊需求的开发者可以通过将lazyCompilation设置为false来显式地禁用这个功能。

这个版本中,有几项实验性功能已经被固化。常量内联优化现在已经稳定,并且在生产构建中默认启用,原来的experiments.inlineConst选项被optimization.inlineExports所取代。TypeScript枚举内联优化和类型re-export检查也已去掉了实验性标志,达到稳定状态。

迁移到Rspack 1.7时需要注意下SWC插件的版本。使用SWC Wasm插件的项目必须升级插件,以兼容swc_core 54或以上版本,以避免构建失败。在他们的FAQ文档中,Rspack团队提供了处理SWC插件版本不匹配问题的指南。

Rspack的定位是兼容webpack的替代方案,其构建速度明显更快。根据Medium上一位用户的记录,从webpack迁移到Rspack后,构建时间减少了70%,本地构建时间从1.7分钟降低到30秒。另一个来自Mews的团队报告说,启动时间从三分钟减少到十秒,提高了80%。然而,Rolldown项目的基准测试显示,尽管Rspack的性能优于webpack,但它仍然比esbuild和Rolldown等工具慢。

这个版本还为更广泛的Rstack生态系统带来了更新:Rsbuild 1.7引入了运行时错误覆盖和资源大小差异报告;Rsdoctor 1.4新增用于包分析的树状图视图;Rslib 0.19稳定了打包模式中的ESM输出。

Rspack是一个由字节跳动开发的开源项目。该工具旨在提供与webpack相当的API兼容性,同时借助Rust语言实现性能提升。如果既不想脱离webpack生态系统,又想加速构建流程,那么这个工具很合适。

原文链接:

https://www.infoq.com/news/2026/01/rspack-final-rust/