-
Notifications
You must be signed in to change notification settings - Fork 1
/
production.client.babel.js
61 lines (55 loc) · 1.3 KB
/
production.client.babel.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
import webpack from 'webpack';
import baseConfig from './production.babel';
import CompressionPlugin from 'compression-webpack-plugin';
import UglifyJSPlugin from 'uglifyjs-webpack-plugin';
import config from '../config';
let plugins = [
...baseConfig.plugins,
new webpack.BannerPlugin({
banner:
'hash:[hash], chunkhash:[chunkhash], name:[name], ' +
'filebase:[filebase], query:[query], file:[file]'
}),
new UglifyJSPlugin({
uglifyOptions: {
compress: {
warnings: false
},
mangle: true,
output: {
comments: false
}
}
}),
new CompressionPlugin({
asset: '[file].gz',
algorithm: 'gzip',
test: /\.css$|\.js$|\.html$/,
threshold: 10240,
minRatio: 0.8
}),
new webpack.optimize.CommonsChunkPlugin({
name: 'vendor',
filename: '[name].[hash].js',
minChunks: module => /node_modules/.test(module.resource)
})
];
let output = {
...baseConfig.output,
filename: '[name].[hash].js'
};
let loaders = [];
if (config.enableDynamicImports) {
// remove commons chunk plugin
plugins = plugins.slice(0, plugins.length - 1);
output.chunkFilename = '[name].[hash].js';
}
export default {
...baseConfig,
output,
plugins,
module: {
...baseConfig.module,
rules: [...baseConfig.module.rules, ...loaders]
}
};