const path = require("path"); // const UglifyJsPlugin = require('uglifyjs-webpack-plugin') const ProgressBarPlugin = require("progress-bar-webpack-plugin"); // const BundleAnalyzerPlugin = require('webpack-bundle-analyzer').BundleAnalyzerPlugin; const IS_PROD = process.env.NODE_ENV === "production"; const chalk = require("chalk"); const baseUrl = process.env.VUE_APP_BASE_URL; console.log(baseUrl); const proxyObj = { [`${baseUrl}`]: { target: process.env.VUE_APP_URL, // target: "https://apinvoice-uat.baozun.com", ws: true, changeOrigin: true, pathRewrite: { [`^${baseUrl}`]: "", }, }, // "/ws": { // target: "https://apis.map.qq.com", // ws: true, // changeOrigin: true, // pathRewrite: { // "^/ws": "" // } // } }; const OUT_DIR = process.env.VUE_APP_ZIP_NAME; const PATH = baseUrl.split("/api")[0]; const PUBLIC_PATH = PATH == "" ? "/" : PATH; function resolve(dir) { return path.join(__dirname, dir); } module.exports = { lintOnSave: true, publicPath: PUBLIC_PATH, assetsDir: "./", productionSourceMap: false, outputDir: OUT_DIR, parallel: require("os").cpus().length > 1, configureWebpack: (config) => { if (IS_PROD) { config.plugins.push( new ProgressBarPlugin({ format: " build [:bar] " + chalk.green.bold(":percent") + " (:elapsed seconds)", clear: false, }) // new BundleAnalyzerPlugin() ); config.optimization = { runtimeChunk: "single", splitChunks: { chunks: "all", maxInitialRequests: Infinity, minSize: 20000, cacheGroups: { vendor: { test: /[\\/]node_modules[\\/]/, name(module) { const packageName = module.context.match( /[\\/]node_modules[\\/](.*?)([\\/]|$)/ )[1]; return `npm.${packageName.replace("@", "")}`; }, }, }, }, // usedExports: true //treeShaking }; } }, devServer: { open: true, proxy: proxyObj, }, pluginOptions: { "style-resources-loader": { preProcessor: "less", patterns: [ path.resolve(__dirname, "./src/style/common.less"), path.resolve(__dirname, "./src/style/element.less"), ], // 引入全局样式变量 }, }, // webpack chian chainWebpack: (config) => { /* if (IS_PROD) { // 对图片资源进行打包 可减小体积 config.module .rule("images") .test(/\.(png|jpe?g|gif|webp)(\?.*)?$/) .use("image-webpack-loader") .loader("image-webpack-loader") .options({ bypassOnDebug: true, }) .end() .use("url-loader") .loader("file-loader") .options({ name: "assets/[name].[hash:8].[ext]", }) .end(); } */ config.resolve.alias .set("@", resolve("src")) .set("@api", resolve("src/api")) .set("@utils", resolve("src/utils")) .set("@comp", resolve("src/components")); }, };