source.exclude

排除不需要被 SWC 编译的 JavaScript 或 TypeScript 文件。

用法

source.exclude 的用法与 source.include 类似,支持传入字符串或正则表达式来匹配模块的路径。

比如:

rsbuild.config.ts
import path from 'node:path';

export default {
  source: {
    exclude: [path.resolve(__dirname, 'src/module-a'), /src\/module-b/],
  },
};

查看 source.include 来了解更多用法。

优先级

当同时设置 source.includesource.exclude 时,source.exclude 具有更高的优先级。

例如,在下面的示例中,虽然 source.include 匹配了整个 src 目录,但 src/foo 目录下的 JavaScript 文件不会被 SWC 编译:

rsbuild.config.ts
import path from 'node:path';

export default {
  source: {
    include: [path.resolve(__dirname, 'src')],
    exclude: [path.resolve(__dirname, 'src/foo')],
  },
};

排除打包

source.exclude 用于指定不需要编译的 JavaScript/TypeScript 文件。这意味着这些文件不会经过 SWC 转译,但被引用的文件仍然会被打包到产物中。

如果你希望某些文件在打包过程中被排除,不被打包到产物中,可以使用 Rspack 的 IgnorePlugin

rsbuild.config.ts
export default {
  tools: {
    rspack: (config, { rspack }) => {
      config.plugins.push(
        new rspack.IgnorePlugin({
          resourceRegExp: /^\.\/locale$/,
          contextRegExp: /moment$/,
        }),
      );
      return config;
    },
  },
};