/* eslint-disable comma-dangle */ /* eslint-disable semi */ /* eslint-disable quotes */ const path = require("path"); const CopywebpackPlugin = require("copy-webpack-plugin"); const dvgisDist = "./node_modules/@dvgis"; const webpack = require("webpack"); // 减少chunk-vendors.js文件大小 const CompressionPlugin = require("compression-webpack-plugin"); const productionGzipExtensions = ["js", "css"]; module.exports = { publicPath: "/changjing/", lintOnSave: false, // 其他配置 chainWebpack: (config) => { config.plugins.delete("prefetch"); config.module .rule("images") .test(/\.(png|jpe?g|gif|svg)(\?.*)?$/) .use("image-webpack-loader") .loader("image-webpack-loader") .options({ bypassOnDebug: true, }); config.plugin("copy").use(CopywebpackPlugin, [ [ { from: path.join(dvgisDist, "dc-sdk/dist/resources"), to: "libs/dc-sdk/resources", }, { from: "./public/img", to: "img", }, { from: "./public/examples", to: "examples", }, // { // from: './public/fz', // to: 'fz' // }, { from: "./public/favicon.ico", to: "favicon.ico", }, { from: "./public/depend", to: "depend", }, // { // from: './public/mx', // to: 'mx' // }, // { // from: './public/wp', // to: 'wp' // }, // { // from: './public/qx', // to: 'qx' // } ], ]); // config.plugin('webpack-bundle-analyzer') // .use(require('webpack-bundle-analyzer').BundleAnalyzerPlugin) }, // 减少chunk-vendors.js文件大小 // 报错 TypeError: Cannot read property 'tapPromise' of undefined // 解决 ,把compression-webpack-plugin包退回成 compression-webpack-plugin@5.0.1 即可 // 文件由8M 减成2.5M productionSourceMap: false, // 代码压缩加密 configureWebpack: { externals: { vue: "Vue", Vuex: "Vuex", "vue-router": "VueRouter", "element-ui": "ELEMENT", echarts: "echarts", // '@dvgis/dc-sdk/dist/dc.base.min': 'DC', // '@dvgis/dc-sdk/dist/dc.core.min': 'DcCore', // '@dvgis/dc-sdk/dist/dc.chart.min': 'DcChart', // '@dvgis/dc-sdk/dist/dc.mapv.min': 'DcMapv', // '@dvgis/dc-sdk/dist/dc.s3m.min': 'DcS3M' }, // webpack plugins plugins: [ // Ignore all locale files of moment.js new webpack.IgnorePlugin(/^\.\/locale$/, /moment$/), // 配置compression-webpack-plugin压缩 new CompressionPlugin({ algorithm: "gzip", test: new RegExp("\\.(" + productionGzipExtensions.join("|") + ")$"), threshold: 10240, minRatio: 0.8, }), new webpack.optimize.LimitChunkCountPlugin({ maxChunks: 5, minChunkSize: 100, }), // 提供带 Content-Encoding 编码的压缩版的资源 // new CompressionPlugin({ // algorithm: 'gzip', // test: /\.js$|\.html$|\.css/, // 匹配文件名 // // test: /\.(js|css)$/, // threshold: 10240, // 对超过10k的数据压缩 // deleteOriginalAssets: false, // 不删除源文件 // minRatio: 0.8 // 压缩比 // }) ], }, devServer: { // https: true // https:{type:Boolean} }, };