有没有办法在Webpack 4中使用splitChunksPlugin手动控制哪些模块放入哪些输出包?

问题描述 投票:0回答:1

我处于一种独特的情况,我需要将我的捆绑包分成单独的文件,但随着应用程序的增长和新增,我无法随时掌握文件总数或文件名称的变化已安装依赖项等

以下配置是错误的,但我认为它将说明我想要完成的最好的事情。我已经阅读了所有文档,但似乎无法在这些方面找到任何内容。

optimization: {
  splitChunks: {
    react: {
      test: /node_modules\/react/
    },
    vendor: {
      test: /node_modules\/(?!react)/
    },
    svgIcons: {
      test: /src\/js\/components\/icons/
    },
  }
}

目的是我们最终得到以下4个捆绑包:

react.bundle.js - Contains all react-related dependencies
vendor.bundle.js - Contains all other vendor files from node modules
svgIcons.bundle.js - Contains a group of app component files that match my test
bundle.js - The default bundle containing everything else.

有没有办法做到这一点?

webpack webpack-4 webpack-splitchunks
1个回答
1
投票

经过一番挖掘后,我终于弄明白了。从本质上讲,这就是您所需要的:

首先,在output对象中......

output: {
  filename: "[name].js"
}

您需要[name]变量,否则您的捆绑包将无法获取正确的名称。

接下来,在optimization对象中......

optimization: {
  splitChunks: {
    cacheGroups: {
      react: {
        chunks: 'initial',
        name: 'react',
        test: /node_modules\/react/,
        enforce: true,
      },
      vendor: {
        chunks: 'initial',
        name: 'vendor',
        test: /node_modules\/(?!react)/,
        enforce: true,
      },
      icons: {
        chunks: 'initial',
        name: 'icons',
        test: /src\/js\/components\/icons/,
        enforce: true,
      },
    },
  },
},

结果如下:

react.js
vendor.js
icons.js
bundle.js
© www.soinside.com 2019 - 2024. All rights reserved.