webpack.config.js 1.02 KB
import TerserPlugin from "terser-webpack-plugin-legacy";
import SpriteLoaderPlugin from "svg-sprite-loader/plugin";
import { resolve } from "path";

export default webpackConfig => {
  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(resolve(__dirname, "./src/assets/icons"));
    }
  });
  webpackConfig.module.rules = [
    {
      test: /\.svg$/,
      include: 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;
};