UNPKG

wkb-common-ui

Version:

wkb-ui

84 lines (77 loc) 2.21 kB
"use strict"; const path = require("path"); const webpack = require("webpack"); const config = require("../config"); const merge = require("webpack-merge"); const baseWebpackConfig = require("./webpack.common"); const CopyWebpackPlugin = require("copy-webpack-plugin"); const OptimizeCSSPlugin = require("optimize-css-assets-webpack-plugin"); const UglifyJsPlugin = require("uglifyjs-webpack-plugin"); const env = process.env.NODE_ENV === "testing" ? require("../config/test.env") : require("../config/prod.env"); const webpackConfig = merge(baseWebpackConfig, { mode: "production", module: { rules: [] }, devtool: config.build.productionSourceMap ? config.build.devtool : false, output: { filename: "[name].min.js" }, externals: { vue: "vue", vuex: "vuex", "vue-router": "vue-router", "element-ui": "element-ui" }, plugins: [ new webpack.DefinePlugin({ "process.env": env }), new UglifyJsPlugin({ uglifyOptions: { compress: { warnings: false } }, sourceMap: config.build.productionSourceMap, parallel: true }), new OptimizeCSSPlugin({ cssProcessorOptions: config.build.productionSourceMap ? { safe: true, map: { inline: false } } : { safe: true } }), new webpack.HashedModuleIdsPlugin(), new webpack.optimize.ModuleConcatenationPlugin(), new CopyWebpackPlugin([ { from: path.resolve(__dirname, "../static"), to: config.build.assetsSubDirectory, ignore: [".*"] } ]) ] }); if (config.build.productionGzip) { const CompressionWebpackPlugin = require("compression-webpack-plugin"); webpackConfig.plugins.push( new CompressionWebpackPlugin({ asset: "[path].gz[query]", algorithm: "gzip", test: new RegExp( "\\.(" + config.build.productionGzipExtensions.join("|") + ")$" ), threshold: 10240, minRatio: 0.8 }) ); } if (config.build.bundleAnalyzerReport) { const BundleAnalyzerPlugin = require("webpack-bundle-analyzer") .BundleAnalyzerPlugin; webpackConfig.plugins.push(new BundleAnalyzerPlugin()); } module.exports = webpackConfig;