source.exclude

指定不需要编译的 JavaScript/TypeScript 文件。用法与 Rspack 中的 Rule.exclude 一致,支持传入字符串或正则表达式来匹配模块的路径。

比如:

import path from 'node:path';

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

参考 source.include 来了解更多。

不编译 vs 不打包

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

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

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