-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathvue.config.js
66 lines (66 loc) · 1.74 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
const { defineConfig } = require('@vue/cli-service');
const CompressionWebpackPlugin = require('compression-webpack-plugin');
const NodePolyfillPlugin = require('node-polyfill-webpack-plugin');
const version = new Date().getTime();
module.exports = defineConfig({
transpileDependencies: true,
productionSourceMap: true,
chainWebpack: (config) => {
config.module
.rule('wasm')
.test(/\.wasm$/)
.type('javascript/auto')
.use('wasm-loader')
.loader('wasm-loader')
.options({})
.end();
//remove VUE_PROD_HYDRATION_MISMATCH_DETAILS__ warning
config.plugin('define').tap((definitions) => {
Object.assign(definitions[0], {
__VUE_OPTIONS_API__: 'true',
__VUE_PROD_DEVTOOLS__: 'false',
__VUE_PROD_HYDRATION_MISMATCH_DETAILS__: 'false',
});
return definitions;
});
},
configureWebpack: {
devtool: 'source-map',
experiments: {
asyncWebAssembly: true,
},
output: {
filename: `js/[name].[hash:8].js?v=${version}`,
chunkFilename: `js/[name].[hash:8].js?v=${version}`,
},
plugins: [
new NodePolyfillPlugin(),
new CompressionWebpackPlugin({
filename: '[path].gz[base]',
algorithm: 'gzip',
test: /\.js$|\.css$|\.html$/,
threshold: 10240,
minRatio: 0.8,
}),
],
optimization: {
runtimeChunk: {
name: 'runtime',
},
splitChunks: {
chunks: 'all',
maxInitialRequests: Infinity,
minSize: 20000,
maxSize: 250000,
cacheGroups: {
vendor: {
test: /[\\/]node_modules[\\/]/,
name: 'vendors',
priority: 10,
chunks: 'all',
},
},
},
},
},
});