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
129
| 'use strict'
| const glob = require('glob')
| const pages = {}
| const IS_VENDOR = /[\\/]node_modules[\\/]/
| const pageVendor = {}
|
| const pkg = require('./package.json')
| const timestamp = new Date().getTime()
| const queryStr = `?v=${pkg.version}&t=${timestamp}`
|
| 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
| // }
| })
|
| // const serverUrl = "http://58.118.225.79:41243" // 羊五
| const serverUrl = "http://192.168.20.117:7009"
|
| module.exports = {
| pages,
| chainWebpack: config => {
| config.plugins.delete('named-chunks')
| if (process.env.NODE_ENV === 'production') {
| config.output.filename('js/[name].js' + queryStr).end()
| config.output.chunkFilename('js/[name].js' + queryStr).end()
| // 修改生产配置
| config.plugin('extract-css').tap(() => [
| {
| filename: `css/[name].css${queryStr}`,
| chunkFilename: `css/[name].css${queryStr}`
| }
| ])
| }
|
| 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: serverUrl,
| // ws: true,
| changeOrigin: true,
| },
| '/ws': {
| target: serverUrl,
| // 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: serverUrl,
| changeOrigin: true
| },
| "/api-v": {
| target: serverUrl,
| changeOrigin: true
| },
| "/api-f": {
| target: serverUrl,
| // secure: false,
| changeOrigin: true
| },
| "/api-p": {
| target: serverUrl,
| // secure: false,
| changeOrigin: true
| },
| "/api-u": {
| target: serverUrl,
| changeOrigin: true
| },
| "/httpImage": {
| target: serverUrl,
| changeOrigin: true, //开启代理
| },
| "/files": {
| target: serverUrl,
| changeOrigin: true, //开启代理
| }
| }
| }
| }
|
|