-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathvue.config.js
81 lines (79 loc) · 2.19 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
const MonacoWebpackPlugin = require('monaco-editor-webpack-plugin');
const {GenerateSW} = require('workbox-webpack-plugin');
const path = require('path');
const glob = require('glob');
const fs = require('fs');
const isDev = process.env.NODE_ENV === 'dev';
const rewrites = [];
const pages = {};
glob.sync('./src/pages/*.js').forEach(entry => {
const filename = entry.replace(/(.*\/)*([^.]+).*/ig,'$2');
let pageConfig;
try {
let fileContent = fs.readFileSync(
`./src/config/${filename}.json`,
'utf-8'
);
pageConfig = JSON.parse(fileContent);
} catch (e) {
pageConfig = {};
}
rewrites.push({from: new RegExp('^/' + filename), to: `/${filename}.html`});
pages[filename] = {
entry,
template: path.join(__dirname, '/src/template.html'),
filename: `${filename}.html`,
title: pageConfig.title,
skeleton: pageConfig.skeleton || '',
skeletonStyle: pageConfig.skeletonStyle || '',
minify: isDev ? {} : {
minifyJS: true,
minifyCSS: true,
removeComments: true,
collapseWhitespace: true,
removeAttributeQuotes: true,
},
};
});
module.exports = {
pages,
publicPath: isDev ? '' : '/i-website/dist',
transpileDependencies: ['element-plus'],
productionSourceMap: false,
configureWebpack: {
output: isDev? {
filename: 'js/[name].[hash:6].js',
chunkFilename: 'chunk/[name].[hash:6].js',
}: {
filename: 'js/[name].[contenthash:6].js',
chunkFilename: 'chunk/[name].[contenthash:6].js',
},
resolve: {
alias: {
'@element-plus/icons-vue': path.resolve(process.cwd(), 'node_modules', '@element-plus/icons-vue'),
'element-plus': path.resolve(process.cwd(), 'node_modules', 'element-plus'),
lodash: path.resolve(process.cwd(), 'node_modules', 'lodash')
}
},
plugins: [
new MonacoWebpackPlugin({
filename: 'worker/[name].worker.js',
languages: ['json', 'less'],
}),
new GenerateSW ({
clientsClaim: true,
skipWaiting: true
})
]
},
devServer: {
port: 80,
disableHostCheck: true,
proxy: {
'/api': {
target: 'http://localhost:1026',
changeOrigin: true
}
}
}
};