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; };