const path = require("path"); // 引入打包分析文件 const { BundleAnalyzerPlugin } = require("webpack-bundle-analyzer"); // 引入Gzip压缩文件 const CompressionPlugin = require("compression-webpack-plugin"); // 引入js打包工具 const UglifyJsPlugin = require("uglifyjs-webpack-plugin"); const resolve = dir => path.join(__dirname, dir); const { NODE_ENV, OUT_PUT } = process.env; module.exports = { outputDir: OUT_PUT, lintOnSave: false, publicPath: NODE_ENV === "production" ? "/" : "/", runtimeCompiler: true, productionSourceMap: false, //关闭生产环境下的SourceMap映射文件 chainWebpack: (config) => { config.resolve.alias .set('@', resolve('src')) .set("scss_vars", "@/styles/vars.scss") .set("index_scss", "@/styles/index.scss") .set("api", "@/api") .set("utils", "@/utils") .set("components", "@/components") .set("common", "@/common"); config.resolve.extensions.add(".js").add(".vue").add(".json"); }, configureWebpack: (config) => { config.output.filename = "js/[name].[hash].js"; config.output.chunkFilename = "js/[id].[hash].js"; config.optimization = { usedExports: true, }; config.externals = { luckysheet: "luckySheet", }; const pluginsPro = [ new CompressionPlugin({ algorithm: "gzip", test: /\.js$|\.html$|\.css$/, // 匹配文件名 minRatio: 0.8, // 压缩率小于1才会压缩 threshold: 10240, // 对超过10k的数据压缩 deleteOriginalAssets: false, // 是否删除未压缩的源文件 }), new UglifyJsPlugin({ uglifyOptions: { compress: { drop_debugger: true, drop_console: true, //生产环境自动删除console pure_funcs: ["console.log"], //移除console }, }, sourceMap: false, parallel: true, //使用多进程并行运行来提高构建速度。默认并发运行数:os.cpus().length - 1。 }), ]; if (NODE_ENV !== "development") { config.plugins = [...config.plugins, ...pluginsPro]; } }, devServer: { port: "3030", open: false, proxy: { "/adminapi": { target: "http://8.136.199.33:7778", // target: "http://8.136.199.33:8602", changeOrigin: true, //允许跨域 pathRewrite: { "^/adminapi": "/adminapi", }, }, }, }, };