-
Notifications
You must be signed in to change notification settings - Fork 3
/
webpack.config.js
98 lines (91 loc) · 2.61 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
const VarieBundler = require("varie-bundler");
const ENV = require("dotenv").config().parsed;
module.exports = function(env) {
let appBundle = new VarieBundler(env, {
bundleName: "web",
vue: {
runtimeOnly: false,
},
})
.webWorkers()
.entry("app", ["resources/js/app/app.ts", "resources/sass/app.scss"])
.aliases({
"@app": "resources/js/app",
"@views": "resources/js/views",
"@store": "resources/js/store",
"@config": "resources/js/config",
"@routes": "resources/js/routes",
"@models": "resources/js/app/models",
"@resources": "resources/js/resources",
"@components": "resources/js/app/components",
})
.varieConfig({
app: {
ENV: ENV.APP_ENV,
APP_URL: ENV.APP_URL,
WS_HOST: ENV.WS_HOST,
WS_PORT: ENV.WS_PORT,
VERSION: require("./package").version,
},
services: {
PUSHER_APP_KEY: ENV.PUSHER_APP_KEY,
},
})
.dontClean([
"svg",
"vendor",
".htaccess",
"favicon.ico",
"index.php",
"robots.txt",
])
.chainWebpack((config, env) => {
config.when(!env.isHot, () => {
config.plugin("html").tap((opts) => {
opts[0].filename = "../resources/views/layouts/app.blade.php";
return opts;
});
});
})
.chainWebpack((config) => {
config.devServer.disableHostCheck(true);
})
.proxy("/api", ENV.APP_URL);
let clientBundle = new VarieBundler(env, { bundleName: "client" })
.varieConfig({
app: {
ENV: ENV.APP_ENV,
APP_URL: ENV.APP_URL,
WS_HOST: ENV.WS_HOST,
WS_PORT: ENV.WS_PORT,
VERSION: require("./package").version,
},
services: {
PUSHER_APP_KEY: ENV.PUSHER_APP_KEY,
},
})
.entry("client", ["resources/js/client/client.ts"])
.chainWebpack((config) => {
config.module.rules.delete("html");
config.module.rules.delete("javascript");
config.plugins.delete("html");
config.plugins.delete("clean");
config.plugins.delete("multi-build");
config.plugins.delete("mini-extract");
config.plugins.delete("browser-sync");
config.plugins.delete("optimize-assets");
config.devServer.hot(false);
config.optimization.splitChunks({}).runtimeChunk(false);
if (config.plugins.has("analyzer")) {
config.plugin("analyzer").tap(() => {
return [
{
analyzerPort: 8890,
},
];
});
}
config.output.filename("js/client.js");
});
return [...appBundle.build(), ...clientBundle.build()];
};