close
CC 4.0 协议

本节内容派生于以下链接指向的内容 ,并遵守 CC BY 4.0 许可证的规定。

以下内容如果没有特殊声明,可以认为都是基于原内容的修改和删减后的结果。

Module

模块:该选项用于决定如何处理一个项目中不同类型的模块。

  • 类型: Object
  • 默认值: {}

module.defaultRules

  • 类型: (Rule | Falsy)[]

defaultRules 用于配置 Rspack 在内部默认启用的模块解析与处理规则。这些规则是自动生效的,用于确保常见资源类型(如 JavaScript、JSON、CSS、Wasm 等)能够被正常解析和打包。

你可以通过该选项扩展、覆写或禁用默认规则,从而对构建行为进行更细粒度的控制。

例如,扩展默认规则:

rspack.config.mjs
export default {
  module: {
    defaultRules: [
      // 你可以使用 "..." 来引用 Rspack 默认的规则
      '...',
      // 增加一个自定义规则
      {
        test: /\.foo$/,
        use: ['foo-loader'],
      },
    ],
  },
};

如果你希望移除 Rspack 所有的默认规则,你可以省略 "..."

rspack.config.mjs
export default {
  module: {
    defaultRules: [],
  },
};
Tip

查看 源代码 了解所有的默认规则。

module.generator

  • 类型: Object
  • 默认值: {}

使用 module.generator 可以按模块类型配置输出生成选项,例如资源文件名、publicPath 和 CSS Modules 导出形式。查看 Module Generator 了解详情。

module.noParse

  • 类型: string | string[] | RegExp | RegExp[] | ((request: string) => boolean)
  • 默认值: undefined

匹配的文件代码不会被 Rspack 转换,包括 module.exports, require, import 这些模块系统相关的语法。

用来忽略那些没有外部依赖的第三方库的时候很有用,有时还能提升性能。

请注意:这些文件依然还会被已配置的 loaders 处理。

rspack.config.mjs
export default {
  module: {
    noParse: /typescript|watermark-dom/,
  },
};
rspack.config.mjs
import { createRequire } from 'node:module';

const require = createRequire(import.meta.url);

export default {
  module: {
    noParse: [require.resolve('typescript'), /watermark-dom/],
  },
};
rspack.config.mjs
export default {
  module: {
    noParse: (request) => /typescript|watermark-dom/.test(request),
  },
};

module.parser

  • 类型: Object
  • 默认值: {}

使用 module.parser 可以按模块类型配置解析器选项,例如依赖收集以及模块语法的解析方式。查看 Module Parser 了解详情。

module.rules

查看 Module Rules 了解详情。