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