Webpack 多个块包含相同的依赖项

Webpack multiple chunks include same dependency

我想在不同的块中有一些依赖关系,所以 client.js 会更小。网络包 4.16.5

为什么我将相同的代码包含到几个块中?缺少什么?

const path = require('path');
const webpack = require('webpack');
const CleanWebpackPlugin = require('clean-webpack-plugin');
const HtmlWebpackPlugin = require('html-webpack-plugin');
const BundleAnalyzerPlugin = require('webpack-bundle-analyzer').BundleAnalyzerPlugin;

module.exports = {
  mode: 'production',
  target: 'web',
  // devtool: 'source-map',
  entry: {
   echarts: ['echarts'],
    vendor_1: ['react', 'immutable', 'lodash', 'redux', 'redux-saga'],
    vendor_2: ['@material-ui/core', '@tinymce/tinymce-react'],
    client: ['babel-polyfill', path.join(__dirname, 'app/index.js')],
  },
  output: {
    path: path.join(__dirname, '/dist/'),
    filename: '[hash].[name].js',
    publicPath: './',
  },
  resolve: {
    modules: [
      path.join(__dirname, '/app'),
      'node_modules',
    ],
  },
  plugins: [
    new CleanWebpackPlugin(['dist']),
    new HtmlWebpackPlugin({
      template: 'app/index.tpl.html',
      inject: 'body',
      filename: 'index.html',
    }),
    new BundleAnalyzerPlugin(),
  ],
  module: {
    rules: [
      {
        test: /\.js?$/,
        exclude: /node_modules/,
        use: [{
          loader: 'babel-loader',
        }],
      },
      {
        test: /\.scss$/,
        use: [
          'style-loader',
          'css-loader?modules&localIdentName=[name]---[local]---[hash:base64:5]',
          'sass-loader',
        ],
      },
      {
        test: /\.woff(2)?(\?[a-z0-9#=&.]+)?$/,
        use: [{
          loader: 'url?limit=10000&mimetype=application/font-woff',
        }],
      },
      {
        test: /\.(ttf|eot|svg)(\?[a-z0-9#=&.]+)?$/,
        use: [{
          loader: 'file',
        }],
      },
    ],
  },
};

我添加了优化配置,它现在可以正常工作了。

  optimization: {
    splitChunks: {
      chunks: 'initial',
    },
  },

我对值进行了一些尝试,这是我的代码库的最佳结果,没有任何额外的代码编辑。您可以在此处找到所有可能的选项:

https://webpack.js.org/configuration/optimization/

感谢 Pavel 的提示 ;)