-
Notifications
You must be signed in to change notification settings - Fork 27
/
webpack.config.js
110 lines (101 loc) · 2.55 KB
/
webpack.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
const path = require('path')
const UglifyJsPlugin = require('uglifyjs-webpack-plugin')
var NPM_RUN = process.env.npm_lifecycle_event
const externals = () => {
// By default, only Clappr is defined as external library
return {
clappr: {
amd: 'clappr',
commonjs: 'clappr',
commonjs2: 'clappr',
root: 'Clappr'
}
}
}
const webpackConfig = (config) => {
return {
devServer: {
contentBase: [
path.resolve(__dirname, 'public'),
],
disableHostCheck: true, // https://github.com/webpack/webpack-dev-server/issues/882
compress: true,
host: '0.0.0.0',
port: 8181
},
mode: config.mode,
devtool: 'source-maps',
entry: path.resolve(__dirname, 'src/clappr-dash-shaka-playback.js'),
externals: config.externals,
module: {
rules: [
{
test: /\.js$/,
loader: 'babel-loader',
include: [
path.resolve(__dirname, 'src')
]
},
],
},
output: {
path: path.resolve(__dirname, 'dist'),
publicPath: 'dist/',
filename: config.filename,
library: 'DashShakaPlayback',
libraryTarget: 'umd',
},
plugins: config.plugins,
}
}
var configurations = []
if (NPM_RUN === 'build' || NPM_RUN === 'start') {
// Unminified bundle with shaka-player
configurations.push(webpackConfig({
filename: 'dash-shaka-playback.js',
plugins: [],
externals: externals(),
mode: 'development'
}))
// Unminified bundle without shaka-player
var customExt = externals()
customExt['shaka-player'] = 'shaka'
configurations.push(webpackConfig({
filename: 'dash-shaka-playback.external.js',
plugins: [],
externals: customExt,
mode: 'development'
}))
}
if (NPM_RUN === 'release') {
// Minified bundle with shaka-player
configurations.push(webpackConfig({
filename: 'dash-shaka-playback.min.js',
optimization: {
minimizer: [
new UglifyJsPlugin({
sourceMap: true
}),
]
},
externals: externals(),
mode: 'production'
}))
// Minified bundle without shaka-player
var customExt = externals()
customExt['shaka-player'] = 'shaka'
configurations.push(webpackConfig({
filename: 'dash-shaka-playback.external.min.js',
optimization: {
minimizer: [
new UglifyJsPlugin({
sourceMap: true
}),
]
},
externals: customExt,
mode: 'production'
}))
}
// https://webpack.js.org/configuration/configuration-types/#exporting-multiple-configurations
module.exports = configurations