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

export default webpackConfig => {
  const webpack = require("webpack");
  const now = new Date();
  const version = `JMES-${now.getFullYear()}${String(now.getMonth() + 1).padStart(2, '0')}${String(now.getDate()).padStart(2, '0')} ${String(now.getHours()).padStart(2, '0')}${String(now.getMinutes()).padStart(2, '0')}v1`;
  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(),
    new webpack.DefinePlugin({
      "process.env.APP_VERSION": JSON.stringify(version)
    })
  ]);
  if (process.env.NODE_ENV === "production") {
    webpackConfig.plugins.splice(
      3,
      1,
      new TerserPlugin({
        cache: true,
        parallel: true
      })
    );
  }
  return webpackConfig;
};