forked from tvrbo-pro/TvrboReact
-
Notifications
You must be signed in to change notification settings - Fork 0
/
webpack.config.js
117 lines (110 loc) · 2.7 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
111
112
113
114
115
116
117
const path = require("path");
const config = require("./app/config/server");
const webpack = require("webpack");
const webpackConfig = {
mode: "development",
devtool: "inline-source-map",
context: path.resolve(__dirname, "app"),
entry: [
"react-hot-loader/patch",
// activate HMR for React
"webpack-dev-server/client?http://127.0.0.1:8080",
// bundle the client for webpack-dev-server
// and connect to the provided endpoint
"webpack/hot/only-dev-server",
// bundle the client for hot reloading
// only- means to only hot reload for successful updates
"./client.jsx"
],
output: {
path: path.join(__dirname, "public"),
filename: "bundle.js",
publicPath: "/"
},
resolve: {
modules: [path.resolve(__dirname, "node_modules")],
extensions: [".js", ".jsx"]
},
module: {
rules: [
{
test: /\.js$/,
exclude: /node_modules/,
loader: "babel-loader",
options: {
presets: [["env", { modules: false }], "stage-1"],
plugins: ["react-hot-loader/babel" /*, "external-helpers"*/],
compact: true
}
},
{
test: /\.jsx$/,
exclude: /node_modules/,
loader: "babel-loader",
options: {
presets: [["env", { modules: false }], "react", "stage-1"],
plugins: [
"transform-decorators-legacy",
"react-hot-loader/babel" /*, "external-helpers"*/
],
compact: true
}
},
// STYLES
{
test: /\.less$/,
use: ["style-loader", "css-loader", "less-loader"]
},
{
test: /\.css$/,
use: ["style-loader", "css-loader"]
},
// MEDIA
{
test: /\.(jpe?g|png|gif|svg|jpg)$/i,
use: ["url-loader?limit=5000", "img-loader"]
},
{
test: /\.(woff|woff2)$/,
use: ["file-loader?prefix=fonts/"]
},
{
test: /\.ttf$/,
use: ["file-loader?prefix=fonts/"]
},
{
test: /\.eot$/,
use: ["file-loader?prefix=fonts/"]
}
]
},
plugins: [
new webpack.DefinePlugin({
"global.WEBPACK": JSON.stringify(true),
"process.env.NODE_ENV": JSON.stringify(process.env.NODE_ENV),
NODE_ENV: JSON.stringify(process.env.NODE_ENV),
"config.DEBUG": JSON.stringify(true),
"config.APP_NAME": JSON.stringify(config.APP_NAME),
"config.SERVER_URL": JSON.stringify(config.SERVER_URL),
"config.GOOGLE_ANALYTICS_CODE": JSON.stringify(
config.GOOGLE_ANALYTICS_CODE
)
}),
new webpack.optimize.OccurrenceOrderPlugin(),
new webpack.HotModuleReplacementPlugin(), // enable HMR globally
new webpack.NamedModulesPlugin(),
new webpack.NoEmitOnErrorsPlugin()
],
devServer: {
hot: true,
proxy: {
"*": "http://127.0.0.1:" + config.HTTP_PORT,
"/ws": {
target: "ws://127.0.0.1:" + config.HTTP_PORT,
ws: true
}
},
host: "127.0.0.1"
}
};
module.exports = webpackConfig;