-
Notifications
You must be signed in to change notification settings - Fork 5
/
Copy pathwebpack.config.js
91 lines (85 loc) · 2.11 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
// This is all james' fault
// Don't worry, he eventually repented and became an electrical engineer
var webpack = require('webpack');
var merge = require('webpack-merge');
var path = require('path');
var CopyWebpackPlugin = require('copy-webpack-plugin');
var conf = {
context: path.resolve(__dirname, 'src'),
entry: {
app: './app.ts',
},
output: {
path: path.resolve(__dirname, 'bc17'),
publicPath: '/bc17/',
filename: 'bundle.js'
},
resolve: {
// add `.ts` as a resolvable extension.
extensions: ['.ts', '.js', '.png', '.jpg']
},
module: {
rules: [
{ test: /\.ts$/, loader: 'awesome-typescript-loader' },
{ test: /\.(png|jpg)$/, loader: 'url-loader?limit=10000&name=[name]-[hash:base64:7].[ext]' },
{ test: /\.css$/, loader: "style-loader!css-loader" }
]
}
};
module.exports = function(env) {
env = env || {};
if (env.dev) {
// we're in dev
conf = merge(conf, {
devtool: 'source-map',
plugins: [
new webpack.HotModuleReplacementPlugin(),
new webpack.LoaderOptionsPlugin({
minimize: false,
debug: true
}),
]
});
} else {
// we're compiling for prod
conf = merge(conf, {
plugins: [
new webpack.optimize.UglifyJsPlugin(),
new webpack.LoaderOptionsPlugin({
minimize: true,
debug: false
}),
]
});
}
if (env.electron) {
// we're compiling for electron
conf = merge(conf, {
target: 'electron-renderer',
plugins: [
new webpack.DefinePlugin({
'process.env.ELECTRON': true
})
],
// electron will find './bc17/thing.ext' but won't find '/bc17/thing.ext'
output: { publicPath: './bc17/' }
});
} else {
// we're compiling for the browser
conf = merge(conf, {
plugins: [
new webpack.DefinePlugin({
'process.env.ELECTRON': false
})
],
externals: {
'electron': 'electron',
'os': 'os',
'fs': 'fs',
'child_process': 'child_process',
'http': 'http'
}
});
}
return conf;
};