-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathwebpack.config.js
More file actions
99 lines (97 loc) · 2.78 KB
/
Copy pathwebpack.config.js
File metadata and controls
99 lines (97 loc) · 2.78 KB
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
const path = require('path');
const TerserPlugin = require('terser-webpack-plugin');
module.exports = (env, argv) => {
const isProduction = argv.mode === 'production';
return {
entry: './src/index.js',
output: {
path: path.resolve(__dirname, 'dist'),
filename: isProduction ? 'oddsockets.min.js' : 'oddsockets.js',
library: {
name: 'OddSockets',
type: 'umd'
},
globalObject: 'this',
clean: false
},
resolve: {
extensions: ['.js', '.ts'],
alias: {
// Use browser-specific HTTP implementation
'axios': path.resolve(__dirname, 'src/browser-http.js')
}
},
module: {
rules: [
{
test: /\.js$/,
exclude: /node_modules/,
use: {
loader: 'babel-loader',
options: {
presets: [
['@babel/preset-env', {
targets: {
browsers: ['> 1%', 'last 2 versions', 'not ie <= 8']
},
modules: false
}]
]
}
}
}
]
},
optimization: {
minimize: isProduction,
minimizer: [
new TerserPlugin({
terserOptions: {
compress: {
drop_console: isProduction, // Remove ALL console statements in production
drop_debugger: true,
pure_funcs: isProduction ? [
'console.log',
'console.info',
'console.debug',
'console.warn',
'console.error',
'console.trace',
'console.time',
'console.timeEnd',
'console.group',
'console.groupEnd',
'console.groupCollapsed'
] : ['console.debug'],
// More aggressive console removal
global_defs: isProduction ? {
'console.log': 'void 0',
'console.info': 'void 0',
'console.debug': 'void 0',
'console.warn': 'void 0',
'console.error': 'void 0',
'console.trace': 'void 0'
} : {}
},
mangle: {
reserved: ['OddSockets', 'Channel', 'PubNubCompat']
},
format: {
comments: false
}
},
extractComments: false
})
]
},
externals: {
// Don't bundle these dependencies - they'll be included in the bundle
// Comment out if you want them bundled
// 'socket.io-client': 'io',
// 'eventemitter3': 'EventEmitter'
},
devtool: isProduction ? 'source-map' : 'eval-source-map',
target: 'web',
mode: argv.mode || 'development'
};
};