是否可以缩小除一个包之外的所有包?

时间:2019-02-04 13:49:56

标签: optimization webpack minify minimize

我的webpack优化配置如下:

optimization: {
    runtimeChunk: 'single',
    minimize: false,
    splitChunks: {
        chunks: 'all',
        maxInitialRequests: Infinity,
        minSize: 0,
        cacheGroups: {
            config: {
                test: /[\\/]app[\\/]js[\\/]config[\\/]/,
                minSize: 0
            },
            vendors: {
                test: /[\\/]node_modules[\\/]/,
                name(module) {
                    // get the name. E.g. node_modules/packageName/not/this/part.js
                    // or node_modules/packageName
                    const packageName = module.context.match(/[\\/]node_modules[\\/](.*?)([\\/]|$)/)[1];

                    // npm package names are URL-safe, but some servers don't like @ symbols
                    return `npm.${packageName.replace('@', '')}`;
                },
            }
        },
    },
},

这很完美,可以生成我想要的所有捆绑包。 但是,我不希望将配置包缩小。不过,所有其他捆绑包都应缩小。到目前为止,我只找到一个全局设置,最小化:true / false。我还有另一种更细粒度的设置方式吗?

1 个答案:

答案 0 :(得分:1)

查看有关optimization.minimizer设置和chunkFilter的文档 选项。您应该为config块设置名称。并在您的optimization设置中添加以下内容:

minimizer: [
  new TerserPlugin({
    chunkFilter: (chunk) => {
      if (chunk.name === 'CONFIG CHUNK NAME') {
        return false;
      }

      return true;
    },
  }),
],

请注意,您需要使用插件:const TerserPlugin = require('terser-webpack-plugin');