You need to enable JavaScript to run this app. 如何在webpack的splitChunks配置中排除多个指定文件?
优惠活动
大模型
产品
解决方案
定价
更多

如何在webpack的splitChunks配置中排除多个指定文件?

你的配置仅针对有明确name属性的chunk做过滤,实际场景中很多chunk(比如动态导入生成的匿名chunk、未配置name的入口chunk)要么没有name,要么name和你预设的文件名不一致,导致匹配失败。

下面分两种常用场景提供解决方案:

场景1:按chunk名称排除整个chunk不参与拆分

先确认你要排除的chunk的实际名称,可先加日志打印所有chunk名做核对:

const excludedChunkNames = ['file 1', 'file 2'];

module.exports = {
  // ...其他webpack配置
  optimization: {
    splitChunks: {
      chunks (chunk) {
        // 构建时会输出所有参与拆分判断的chunk名,核对是否和你配置的一致
        console.log('Chunk name:', chunk.name);
        return !excludedChunkNames.includes(chunk.name);
      }
    }
  }
};

如果确认chunk名匹配还是不生效,可补充判断chunk的入口文件路径兜底:

const excludedFiles = [/file 1\.js$/, /file 2\.js$/];
module.exports = {
  // ...其他webpack配置
  optimization: {
    splitChunks: {
      chunks (chunk) {
        const entryPath = chunk.getModules()[0]?.resource;
        return !excludedFiles.some(reg => reg.test(entryPath || '')) && !excludedFiles.includes(chunk.name);
      }
    }
  }
};

场景2:排除指定源文件/模块不被抽取到公共chunk

如果你要排除的是单个文件/模块,不是整个chunk,用exclude配置项更精准:

const path = require('path');
// 填写要排除的文件绝对路径
const excludedModules = [
  path.resolve(__dirname, 'src/utils/file1.js'),
  path.resolve(__dirname, 'src/components/file2.vue')
];

module.exports = {
  // ...其他webpack配置
  optimization: {
    splitChunks: {
      chunks: 'all',
      exclude(module) {
        // module.resource就是当前模块的源文件绝对路径
        return excludedModules.includes(module.resource);
      }
    }
  }
};

验证方式

构建时添加--profile --json参数导出构建统计信息,可直接查看chunk拆分结果确认是否生效:

npx webpack --profile --json > stats.json

内容的提问来源于stack exchange,提问作者Brian Serrano

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.20 07:36:04