Files
slot-game-kit/bundler/webpack.dev.js
Andrey Sharshov c02d04073f initial
2025-11-16 18:48:06 +01:00

73 lines
2.3 KiB
JavaScript

const path = require('path');
const { merge } = require('webpack-merge');
const commonConfiguration = require('./webpack.common.js');
const ip = require('ip');
const portFinderSync = require('portfinder-sync');
const fs = require("fs");
const infoColor = (_message) => {
return `\u001b[1m\u001b[34m${_message}\u001b[39m\u001b[22m`;
};
module.exports = (env) => {
return merge(
commonConfiguration(env),
{
devtool: 'source-map',
stats: 'errors-warnings',
mode: 'development',
infrastructureLogging:
{
level: 'warn',
},
snapshot: { managedPaths: [] },
devServer:
{
// host: 'local-ip',
port: portFinderSync.getPort(3000),
open: true,
https: false,
allowedHosts: 'all',
hot: false,
//watchFiles: ['./',],
client:
{
logging: 'none',
overlay: true,
progress: false,
},
setupMiddlewares: function (middlewares, devServer) {
const port = devServer.options.port;
const https = devServer.options.https ? 's' : '';
const localIp = ip.address();
const domain1 = `http${https}://${localIp}:${port}`;
const domain2 = `http${https}://localhost:${port}`;
console.log(`Project running at:\n - ${infoColor(domain1)}\n - ${infoColor(domain2)}`);
return middlewares;
},
proxy: { // used to be able to send cookies via fetch
"/proxy": {
target: "https://dev.popiplay.dev",
changeOrigin: true,
secure: false,
pathRewrite: { "^/proxy": "" }, // removes "/proxy" before redirection
cookieDomainRewrite: "localhost",
// dynamic replace
router: (req) => {
const cookieHeader = req.headers.cookie || "";
const match = cookieHeader.match(/proxy_target=([^;]+)/);
const target = match ? ("https://" + decodeURIComponent(match[1])) : "https://dev.popiplay.dev";
// console.error(`[proxy][router] ${req.method} ${req.url} -> ${target}`);
// console.error(`[proxy][router] ${target}`);
return target;
},
},
},
},
},
);
}