forked from zhontai/Admin.UI
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathvue.config.js
128 lines (123 loc) · 3.5 KB
/
vue.config.js
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
'use strict'
const path = require('path')
const defaultSettings = require('./src/settings.js')
const CompressionPlugin = require('compression-webpack-plugin')
function resolve(dir) {
return path.join(__dirname, dir)
}
const isDev = process.env.NODE_ENV === 'development'
const name = defaultSettings.title || '中台admin'
// 官方配置说明 https://cli.vuejs.org/zh/config/#vue-config-js
module.exports = {
// 基本路径
publicPath: '/',
// 输出文件目录
outputDir: 'dist',
assetsDir: 'static',
lintOnSave: isDev,
productionSourceMap: false,
devServer: {
// 自动启动浏览器
open: true,
port: 9000,
// 浏览器弹出错误
overlay: {
warnings: false,
errors: true
},
// 配置多个代理
// detail: https://cli.vuejs.org/config/#devserver-proxy
proxy: {
['^' + process.env.VUE_APP_BASE_API]: {
target: 'http://localhost:8000',
changeOrigin: true
},
'^/upload': {
target: 'http://localhost:8000',
changeOrigin: true
},
'^/images': {
target: 'http://localhost:8000',
changeOrigin: true
},
'^/swagger-resources': {
target: 'http://localhost:8000',
changeOrigin: true
},
'^/swagger': {
target: 'http://localhost:8000',
changeOrigin: true
}
}
},
css: {
loaderOptions: {
sass: {
sassOptions: { outputStyle: 'expanded' }
}
}
},
configureWebpack: {
name: name,
resolve: {
alias: {
'@': resolve('src')
}
},
// 发布时关闭警告
performance: {
hints: false
},
plugins: [
// 使用gzip解压缩静态文件
new CompressionPlugin({
cache: false, // 不启用文件缓存
test: /\.(js|css|html)?$/i, // 压缩文件格式
filename: '[path].gz[query]', // 压缩后的文件名
algorithm: 'gzip', // 使用gzip压缩
minRatio: 0.8 // 压缩率小于1才会压缩
})
]
},
// webpack配置
chainWebpack(config) {
config.plugins.delete('prefetch')
config.plugins.delete('preload')
// config.when(isDev, config => config.devtool('cheap-source-map'))
config.when(!isDev,
config => {
config
.plugin('ScriptExtHtmlWebpackPlugin')
.after('html')
.use('script-ext-html-webpack-plugin', [{
// `runtime` must same as runtimeChunk name. default is `runtime`
inline: /runtime\..*\.js$/
}])
.end()
config.optimization.splitChunks({
chunks: 'all',
cacheGroups: {
libs: {
name: 'chunk-libs',
test: /[\\/]node_modules[\\/]/,
priority: 10,
chunks: 'initial' // only package third parties that are initially dependent
},
elementUI: {
name: 'chunk-elementUI', // split elementUI into a single package
priority: 20, // the weight needs to be larger than libs and app or it will be packaged into libs or app
test: /[\\/]node_modules[\\/]_?element-ui(.*)/ // in order to adapt to cnpm
},
commons: {
name: 'chunk-commons',
test: resolve('src/components'), // can customize your rules
minChunks: 3, // minimum common number
priority: 5,
reuseExistingChunk: true
}
}
})
config.optimization.runtimeChunk('single')
})
}
}