close

splitChunks

  • 类型:
type SplitChunksConfig =
  | (Rspack.OptimizationSplitChunksOptions & {
      preset?: SplitChunksPreset;
    })
  | false;
  • 默认值: 基于 output.target
    • output.target'web' 时,为 { preset: 'default', chunks: 'all' }
    • output.target 为其他值时,为 false
  • 版本: >= 2.0.0

splitChunks 用于配置 Rsbuild 的 chunk 拆分策略。

该选项基于 Rspack 的 optimization.splitChunks 实现,并在其基础上扩展了 preset 选项,用于启用 Rsbuild 提供的一组常用拆分预设。

splitChunks.preset

  • 类型: 'default' | 'per-package' | 'single-vendor' | 'none' | undefined
  • 默认值: output.target'web' 时为 'default',其他值时为 none

preset 用于启用 Rsbuild 内置的拆包预设,以简化常见的 chunk 拆分场景。

default

Rsbuild 默认的拆包策略,包含如下规则:

rsbuild.config.ts
export default {
  splitChunks: {
    preset: 'default',
  },
};

per-package

per-package 会按照 npm 包粒度对 node_modules 中的依赖进行拆分,每个包对应一个独立的 chunk,生成类似 npm-react.jsnpm-babel_runtime.js 的 chunk 名。

rsbuild.config.ts
export default {
  splitChunks: {
    preset: 'per-package',
  },
};

single-vendor

single-vendor 会将 node_modules 中的所有第三方依赖合并到一个统一的 vendor chunk 中。

rsbuild.config.ts
export default {
  splitChunks: {
    preset: 'single-vendor',
  },
};

none

none 会关闭 Rsbuild 内置的预设规则。当你希望使用 Rspack 的默认行为或仅使用自定义配置时可以使用。

rsbuild.config.ts
export default {
  splitChunks: {
    preset: 'none',
    // 其他自定义配置...
  },
};

其他选项

preset 之外,其余配置项的行为与 Rspack 的 optimization.splitChunks 保持一致,详细用法请参考 Rspack 文档

rsbuild.config.ts
export default {
  splitChunks: {
    // Rsbuild 特有选项
    preset: 'default',
    // Rspack 提供的选项
    chunks: 'all',
    minSize: 20 * 1024,
    cacheGroups: {
      vendors: {
        test: /[\\/]node_modules[\\/]/,
        name: 'vendors',
        priority: -10,
      },
    },
  },
};
Tip

Rsbuild 会先将预设规则转换为配置对象,再与你配置的 splitChunks 选项进行合并,用户配置的优先级更高。

关闭 chunk 拆分

如果你希望关闭 chunk 拆分,可以将 splitChunks 设置为 false

rsbuild.config.ts
export default {
  splitChunks: false,
};