Webpack несколько кусков включают в себя одну и ту же зависимость - PullRequest
0 голосов
/ 27 августа 2018

Я хочу иметь несколько зависимостей в разных чанках, чтобы client.js был меньше. webpack 4.16.5

Почему я получаю один и тот же код для нескольких блоков? Чего не хватает?

enter image description here

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',
        }],
      },
    ],
  },
};

1 Ответ

0 голосов
/ 28 августа 2018

Я добавил оптимизационный конфиг, и теперь он работает как положено.

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

Я немного поиграл со значениями, и это был лучший результат для моей базы кода без каких-либо дополнительных правок кода. Вы можете найти все возможные варианты здесь:

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

Спасибо Павлу за чаевые;)

...