webpack.config.js 1.09 KB
const TerserPlugin = require('terser-webpack-plugin-legacy');
const SpriteLoaderPlugin = require('svg-sprite-loader/plugin');
const path = require('path');

module.exports = (webpackConfig, env) => {
  const data = webpackConfig.resolve.alias;
  webpackConfig.resolve.alias = {
    '@': `${__dirname}/src`,
    ...data,
  };
  webpackConfig.module.rules.forEach((item) => {
    if (String(item.loader).indexOf('url-loader') > -1) {
      // item.exclude.push(/\.svg$/);
      item.exclude.push(path.resolve(__dirname, './src/assets/icons'));
    }
  });
  webpackConfig.module.rules = ([
    {
      test: /\.svg$/,
      include: path.resolve(__dirname, './src/assets/icons'),
      use: [
        {
          loader: 'svg-sprite-loader',
        },
      ],
    },
  ]).concat(webpackConfig.module.rules);
  webpackConfig.plugins = webpackConfig.plugins.concat([
    new SpriteLoaderPlugin(),
  ]);
  if (process.env.NODE_ENV === 'production') {
    webpackConfig.plugins.splice(
      3,
      1,
      new TerserPlugin({
        cache: true,
        parallel: true,
      }),
    );
  }
  return webpackConfig;
};