forked from lqsong/electron-admin-element-vue
-
Notifications
You must be signed in to change notification settings - Fork 0
/
vue.config.js
134 lines (130 loc) · 4.86 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
129
130
131
132
133
134
/* eslint-disable @typescript-eslint/no-var-requires */
const bodyParser = require('body-parser')
const mockServer = require('./src/utils/mock/server');
const { NODE_ENV, VUE_APP_PORT, VUE_APP_MOCK } = process.env;
module.exports = {
publicPath: '/',
outputDir: 'dist',
productionSourceMap: false,
devServer: {
host: '0.0.0.0',
port: VUE_APP_PORT || 8000,
// 配置反向代理
/*
proxy: {
'/api': {
target: '<url>',
ws: true,
changeOrigin: true
},
'/foo': {
target: '<other_url>'
}
},
*/
before: function(app, server) {
if(NODE_ENV === 'development' && VUE_APP_MOCK === 'true') {
// parse app.body
// https://expressjs.com/en/4x/api.html#req.body
// create application/json parser
app.use(bodyParser.json());
// create application/x-www-form-urlencoded parser
app.use(bodyParser.urlencoded({ extended: false}));
mockServer(app);
}
}
},
// 修改webpack的配置
configureWebpack: {
// 不需要打包的插件
externals: {
// 'vue': 'Vue',
// 'vue-router': 'VueRouter',
// 'element-ui': 'ELEMENT'
}
},
chainWebpack(config) {
// 内置的 svg Rule 添加 exclude
config.module
.rule('svg')
.exclude.add(/iconsvg/)
.end();
// 添加 svg-sprite-loader Rule
config.module
.rule('svg-sprite-loader')
.test(/.svg$/)
.include.add(/iconsvg/)
.end()
.use('svg-sprite-loader')
.loader('svg-sprite-loader');
// 添加 svgo Rule
config.module
.rule('svgo')
.test(/.svg$/)
.include.add(/iconsvg/)
.end()
.use('svgo-loader')
.loader('svgo-loader')
.options({
// externalConfig 配置特殊不是相对路径,起始路径是根目录
externalConfig: './src/assets/iconsvg/svgo.yml',
});
},
pluginOptions: {
electronBuilder: {
// electron 构建配置
builderOptions: {
productName: 'electron-admin-element-vue', // 项目名,也是生成的安装文件名,即electron-admin-element-vue.exe
appId: 'cc.liqingsong.electron-admin-element-vue', // 包名
copyright: 'Copyright © 2018-present LiQingSong', // 版权
nsis: {
oneClick: false, // 是否一键安装
allowElevation: true, // 允许请求提升。 如果为false,则用户必须使用提升的权限重新启动安装程序。
allowToChangeInstallationDirectory: true, // 允许修改安装目录
installerIcon: './build/icons/icon.ico', // 安装图标
uninstallerIcon: './build/icons/icon.ico', // 卸载图标
installerHeaderIcon: './build/icons/icon.ico', // 安装时头部图标
createDesktopShortcut: true, // 创建桌面图标
createStartMenuShortcut: true, // 创建开始菜单图标
shortcutName: 'electron-admin-element-vue' // 图标名称
},
dmg: { // macOSdmg
contents: [
{
"x": 410,
"y": 150,
"type": "link",
"path": "/Applications"
},
{
"x": 130,
"y": 150,
"type": "file"
}
]
},
mac: { // mac
icon: "./build/icons/icon.icns",
artifactName: '${productName}-v${version}-mac.${ext}'
},
win: { // win 相关配置
icon: './build/icons/icon.ico',
artifactName: '${productName}-v${version}-win32-setup.${ext}',
target: [
{
target: "nsis", // 利用nsis制作安装程序
arch: [ // 这个意思是打出来32 bit + 64 bit的包,但是要注意:这样打包出来的安装包体积比较大,所以建议直接打32的安装包。
// "x64",
"ia32"
]
}
]
},
linux: {
icon: "./build/icons",
artifactName: '${productName}-v${version}-linux.${ext}'
}
}
}
}
}