close
  • 简体中文
  • 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;
        },
      },
    };