校园-江西科技师范大学-前端
shuishen
2023-12-14 e733164e1c779b3aef7245936b9daf7875bf791e
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
/* 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}
  },
};