-
Notifications
You must be signed in to change notification settings - Fork 0
/
webpack.config.js
77 lines (74 loc) · 1.88 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
const path = require("path");
const MinifyPlugin = require("babel-minify-webpack-plugin");
const src = "./src";
const NODE_ENV = process.env.NODE_ENV;
module.exports = {
entry: src + "/index.js",
output: {
filename: "bundle.js",
path: path.resolve(__dirname, "dist")
},
mode: ["production", "development"].includes(NODE_ENV)
? NODE_ENV
: "production",
devServer: {
contentBase: "./dist"
},
devtool: NODE_ENV !== "production" ? "source-map" : false,
resolve: {
alias: {
Root: path.resolve(src),
Containers: path.resolve(src, "containers/"),
Components: path.resolve(src, "components/"),
Shaders: path.resolve(src, "shaders/"),
State: path.resolve(src, "state/"),
Utils: path.resolve(src, "utils/")
}
},
plugins: [NODE_ENV === "production" ? new MinifyPlugin() : undefined].filter(
Boolean
),
module: {
rules: [
{
test: /\.(glsl|frag|vert)$/,
use: [
{
loader: "raw-loader",
options: {}
},
{
loader: "glslify-loader",
options: {}
}
]
},
{
test: /\.js$/,
exclude: /(node_modules)/,
use: {
loader: "babel-loader",
options: {
presets: [
[
"@babel/preset-env",
{
targets: {
browsers: ["last 2 versions", "safari >= 7"]
}
}
]
],
plugins: [
"@babel/plugin-transform-modules-commonjs",
["@babel/plugin-proposal-decorators", { legacy: true }],
"@babel/plugin-proposal-class-properties",
"@babel/plugin-proposal-object-rest-spread",
"@babel/plugin-transform-runtime"
]
}
}
}
]
}
};