• Rspack发布最新的v1.5.7版本 都有哪些新特性?
  • 发布于 1天前
  • 99 热度
    0 评论
前言
刚刚看到,Rspack 发布了最新的 v1.5.7 版本,

本文将带大家快速看看更新内容!

正文
1.动态导入支持 .then() 语法
引入了对动态导入 .then() 回调中解构赋值的静态分析优化!传统树摇在异步代码中往往失效,因为动态导入的模块在运行时解析,导致未使用导出无法被消除。这次更新允许 Rspack 在编译时静态推断 .then() 内的解构变量,仅保留实际使用的导出,从而显著减少最终 bundle 大小。
// 堆代码 duidaima.com
// 适用于.then()回调中的解构
import('./utils').then(module => {
  // 仅包含usedFunction
  const { usedFunction } = module;
  // unusedFunction将被消除
  usedFunction();
});
在之前的版本中,整个./utils模块都会被完整打包,而现在 Rspack 能识别 usedFunction 的使用路径,应用死代码消除,预计能将异步模块体积缩小20-50%,同时保持 Webpack 兼容性。大家无需额外配置,即可在mode: 'production'下自动生效。

2.JSX Preserve支持
另一个亮点是 JSX 语法的解析和保留支持。Rspack现在能解析 JSX 而不进行默认转换,允许外部工具接管转换逻辑。这提升了 Rspack 在 React/Vue 等框架项目中的灵活性,尤其适合需要自定义JSX运行时的场景。
export default {
module: {
    parser: {
      javascript: {
        jsx: true// 启用JSX解析
      }
    },
    rules: [
      {
        test: /\.jsx?$/,
        use: {
          loader: 'swc-loader',
          options: {
            jsc: {
              parser: { jsx: true },
              transform: {
                // 保留JSX语法
                react: { runtime: 'preserve' }
              }
            }
          }
        }
      }
    ]
  }
};
技术上实现上,依赖了 SWC 的 JSX 解析器。相比 Webpack 的 Babel-loader,这减少了转换开销。

最后
除了上述新功能,还包括一些内部优化和 bug 修复,确保了向后兼容,同时利用 Rust 的性能优势,打包速度更快!今天的分享就这些了,感谢大家的阅读,如果文章中存在错误的地方欢迎指正!
用户评论