-
Notifications
You must be signed in to change notification settings - Fork 4
/
vue.config.js
119 lines (107 loc) · 3.05 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
const path = require('path');
// mock 数据插件
const MockServicePlugin = require('mock-service-plugin');
// 代码上传插件
const WebpackScpUploadPlugin = require('webpack-scp-upload-plugin');
const {
NODE_ENV, // 环境变量
VUE_APP_ENV, // 环境标识
VUE_APP_OFFICIAL, // 准生产环境
VUE_APP_TMGI, // 业务标识
VUE_APP_HOST, // 项目运行 域名
VUE_APP_PORT, // 项目运行 端口
VUE_APP_URL // 接口域名
} = process.env;
const SERVER_FILE_PATH = `/usr/local/nginx/html/${VUE_APP_TMGI}`;
// 是否为生产模式
const IS_PROD = NODE_ENV === 'production';
// 是否为 mock 环境
const IS_MOCK = VUE_APP_ENV === 'mock';
// 是否为 准生产 环境
const IS_OFFICIAL = Boolean(
VUE_APP_OFFICIAL !== undefined && VUE_APP_OFFICIAL === 'true'
);
console.log(
'-----------------------------overview-----------------------------'
);
console.log('当前模式:', NODE_ENV);
console.log('环境标识:', VUE_APP_ENV);
console.log('接口域名:', VUE_APP_URL);
if (IS_PROD) {
VUE_APP_OFFICIAL !== undefined &&
console.log('是准生产:', IS_OFFICIAL ? '是' : '否');
console.log('业务标识:', IS_OFFICIAL ? '无' : VUE_APP_TMGI);
} else {
console.log('运行域名:', `${VUE_APP_HOST}:${VUE_APP_PORT}`);
}
console.log(
'-----------------------------overview-----------------------------'
);
// 插件配置
function pluginsConfig() {
const plugins = [];
if (IS_MOCK) {
plugins.push(
new MockServicePlugin({
path: path.join(__dirname, './mocks'),
port: 9090
})
);
}
if (IS_PROD) {
plugins.push(
new WebpackScpUploadPlugin({
host: '8.142.29.231',
password: 'gleason0.0.',
local: 'dist',
path: SERVER_FILE_PATH
})
);
}
return plugins;
}
module.exports = {
publicPath: IS_PROD ? './' : '/',
// 生产环境是否开启 sourcemap
productionSourceMap: false,
// 是否自动开启eslint 检查
lintOnSave: !IS_PROD,
// 输出文件是否使用哈希
filenameHashing: true,
// 文件输出目录
outputDir: 'dist',
// 如果机器有超过1个内核,则在默认情况下为生产构建中的 babel 和 ts 使用线程加载器
parallel: require('os').cpus().length > 1,
configureWebpack: {
// 覆盖webpack默认配置的都在这里
resolve: {
// 配置解析别名其中:@代表根目录,@c代表 src/components 文件夹,等
alias: {
'@': path.resolve(__dirname, './src'),
'@a': path.resolve(__dirname, './src/assets'),
'@c': path.resolve(__dirname, './src/components')
}
},
plugins: pluginsConfig()
},
// 代理服务
devServer: {
compress: true,
open: true, // 启动时 是否 打开浏览器
host: VUE_APP_HOST, // 域名
port: VUE_APP_PORT, // 端口号
https: false, // local.jd.com 是否使用 https 协议
proxy: {
// 主域名
[VUE_APP_ENV]: {
secure: false, // 使用的是 http 协议则设置为false,https 协议则设置为 true
ws: false, // 是否启用websockets
target: VUE_APP_URL, // 代理目标
changeOrigin: true, // 覆盖主机头来源
pathRewrite: {
[`^/${VUE_APP_ENV}`]: ''
}
}
}
}
};