hanbaoshan
2021-02-25 12ea4d9b4c40a7eedfe7440b5d3ff952b381675c
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
'use strict'
const glob = require('glob')
const pages = {}
const IS_VENDOR = /[\\/]node_modules[\\/]/
const pageVendor = {}
 
glob.sync('./src/pages/**/main.ts').forEach(path => {
  const chunk = path.split('./src/pages/')[1].split('/main.ts')[0]
  const chunk_vendor = `${chunk}-vendors`
  const chunk_common = `${chunk}-common`
  pages[chunk] = {
    entry: path,
    template: 'public/index.html',
    title: chunk == 'desktop/index' ? 'SmartAI' : chunk,
    chunks: [chunk_vendor, 'chunk-common', chunk]
  }
  if (chunk != 'index') {
    pages[chunk].filename = 'view/' + chunk + '.html'
  }
 
  pageVendor[chunk_vendor] = {
    name: chunk_vendor,
    priority: -11,
    chunks: c => c.name === chunk,
    test: /\.js$/,
    enforce: true
  }
 
  // pageVendor[chunk_common] = {
  //   name: chunk_common,
  //   priority: -20,
  //   chunks: 'initial',
  //   minChunks: 2,
  //   reuseExistingChunk: true,
  //   enforce: true
  // }
})
module.exports = {
  pages,
  chainWebpack: config => {
    config.plugins.delete('named-chunks')
    if (process.env.NODE_ENV === 'production') {
      config.output.filename('js/[name].js').end()
      config.output.chunkFilename('js/[name].js').end()
      // 修改生产配置
      config.plugin('extract-css').tap(() => [
        {
          filename: `css/[name].css`,
          chunkFilename: `css/[name].css`
        }
      ])
    }
 
    config.optimization.splitChunks({
      cacheGroups: pageVendor
    })
 
    // config.module.rule('fonts').use('url-loader').loader('file-loader').options({ name: 'fonts/[name].[ext]', publicPath: '../' })
    //config.module.rule('fonts').use('url-loader').loader('file-loader').options({ name: 'fonts/[name].[ext]', outputPath: '../' })
  },
  productionSourceMap: false,
  filenameHashing: false,
  pwa: {
    iconPaths: {
      favicon32: 'favicon.ico',
      favicon16: 'favicon.ico'
    }
  },
  devServer: {
    proxy: {
      '/track': {
        target: 'http://192.168.20.10:8000',
        // ws: true,
        changeOrigin: true,
      },
      '/ws': {
        target: 'http://192.168.20.10:7003',
        // ws: true,
        changeOrigin: true,
      },
      // "/data/api-v/app/findAllApp": {
      //   // target: '/',
      //   target: 'http://localhost:8080/',
      //   changeOrigin: true,
      //   pathRewrite: {
      //     '^/data/api-v/app/findAllApp': 'apps.json'
      //   }
      // },
      "/api-c": {
        target: 'http://192.168.20.10:8004',
        changeOrigin: true
      },
      "/api-v": {
        target: 'http://192.168.20.10:8000',
        changeOrigin: true
      },
      "/api-f": {
        target: 'http://192.168.20.10:8011',
        // secure: false,
        changeOrigin: true
      },
      "/api-p": {
        target: 'http://192.168.5.23:8010',
        // secure: false,
        changeOrigin: true
      },
      "/api-u": {
        target: 'http://192.168.20.10:8000',
        changeOrigin: true
      },
      "/httpImage": {
        target: 'http://192.168.20.10:7003',
        changeOrigin: true, //开启代理
      },
      "/files": {
        target: 'http://192.168.20.10:7003',
        changeOrigin: true, //开启代理
      }
    }
  }
}