-
Notifications
You must be signed in to change notification settings - Fork 3
Expand file tree
/
Copy pathwebpack.config.js
More file actions
61 lines (54 loc) · 1.85 KB
/
webpack.config.js
File metadata and controls
61 lines (54 loc) · 1.85 KB
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
const fs = require('fs').promises;
const path = require('path');
const glob = require('glob');
const { CleanWebpackPlugin } = require('clean-webpack-plugin');
const proxyConfig = require('./proxy.config.js');
module.exports = {
// Dynamically find all JS files in the src/js folder
entry: glob.sync('./src/js/*.js').reduce((entries, file) => {
const name = path.basename(file, '.js'); // Use filename as entry key
entries[name] = file;
return entries;
}, {}),
output: {
filename: 'js/[name].js', // Output JS bundles under the `js/` folder in dist
path: path.resolve(__dirname, 'dist'),
},
// plugins: [new CleanWebpackPlugin()],
mode: 'production', // Change to 'production' for production builds
devServer: {
proxy: proxyConfig,
static: {
directory: path.join(__dirname, 'dist'),
},
port: 3000, // The port you want to use
open: true,
hot:true,
liveReload: true,
setupMiddlewares: (middlewares, devServer) => {
if (!devServer) {
throw new Error('webpack-dev-server is not defined');
}
middlewares.unshift({
name: 'custom-headers',
middleware: (req, res, next) => {
res.setHeader('X-Content-Type-Options', 'nosniff');
next();
},
});
devServer.app.get(['/questions*', '/ta/questions*'], async (req, res) => {
const content = await fs.readFile('./dist/practices/basic/index.html', 'utf8');
res.send(content);
});
devServer.app.get('/profile*', async (req, res) => {
const content = await fs.readFile('./dist/profile/index.html', 'utf8');
res.send(content);
});
return middlewares;
},
},
performance: {
maxEntrypointSize: 1500000,
maxAssetSize: 1500000, // 1500 KB
}
};