forked from madebyform/react-parts
-
Notifications
You must be signed in to change notification settings - Fork 0
/
webpack.config.js
89 lines (77 loc) · 2.13 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
/*jshint esnext:true, node:true */
'use strict';
let path = require('path');
let webpack = require('webpack');
let production = (process.env.NODE_ENV == "production");
let Config = {};
Config.common = function() {
return {
output: {
path: path.resolve("./assets"),
filename: "app.js",
publicPath: "/"
},
entry: [
"./src/app.jsx"
],
module: {
loaders: [{
test: /\.jsx?$/,
loader: "babel",
include: path.resolve("./src")
}]
},
plugins: [
new webpack.DefinePlugin({ __DEV__: JSON.stringify(!production) })
]
};
};
Config.production = function() {
let config = Object.assign({}, Config.common());
config.plugins.push(
new webpack.optimize.OccurenceOrderPlugin(),
new webpack.DefinePlugin({
'process.env': {
'NODE_ENV': JSON.stringify('production')
}
}),
new webpack.optimize.UglifyJsPlugin({
compressor: {
warnings: false
}
})
);
config.output.filename = "app.min.js";
return config;
};
Config.development = function() {
let config = Object.assign({}, Config.common(), {
devtool: 'eval'
});
config.plugins.push(
/* Plugins required by webpack-hot-middleware */
new webpack.HotModuleReplacementPlugin(), // Hot module replacement
new webpack.NoErrorsPlugin() // No errors is used to handle errors more cleanly
);
// Add new client that allows connection to the server to receive notifications
// when the bundle rebuilds and then updates the app bundle accordingly
config.entry.push("webpack-hot-middleware/client");
// Add configs to the babel loader for react-transform (git.io/vWzwN)
config.module.loaders[0].query = {
plugins: ["react-transform"],
extra: {
"react-transform": {
"transforms": [{
"transform": "react-transform-hmr",
"imports": ["react"],
"locals": ["module"]
}, {
"transform": "react-transform-catch-errors",
"imports": ["react", "redbox-react"]
}]
}
}
};
return config;
};
module.exports = production ? Config.production() : Config.development();