mirror of
https://github.com/thelounge/thelounge
synced 2024-11-25 13:30:21 +00:00
43 lines
1.1 KiB
TypeScript
43 lines
1.1 KiB
TypeScript
import webpackDevMiddleware from "webpack-dev-middleware";
|
|
import webpackHotMiddleware from "webpack-hot-middleware";
|
|
import express from "express";
|
|
|
|
import log from "../log";
|
|
|
|
import webpack from "webpack";
|
|
import config from "../../webpack.config";
|
|
|
|
export default (app: express.Application) => {
|
|
log.debug("Starting server in development mode");
|
|
|
|
const webpackConfig = config(undefined, {mode: "production"});
|
|
|
|
if (
|
|
!webpackConfig ||
|
|
!webpackConfig.plugins?.length ||
|
|
!webpackConfig.entry ||
|
|
!webpackConfig.entry["js/bundle.js"]
|
|
) {
|
|
throw new Error("No valid production webpack config found");
|
|
}
|
|
|
|
webpackConfig.plugins.push(new webpack.HotModuleReplacementPlugin());
|
|
webpackConfig.entry["js/bundle.js"].push(
|
|
"webpack-hot-middleware/client?path=storage/__webpack_hmr"
|
|
);
|
|
|
|
const compiler = webpack(webpackConfig);
|
|
|
|
app.use(
|
|
// eslint-disable-next-line @typescript-eslint/no-misused-promises
|
|
webpackDevMiddleware(compiler, {
|
|
index: "/",
|
|
publicPath: webpackConfig.output?.publicPath,
|
|
})
|
|
).use(
|
|
// TODO: Fix compiler type
|
|
webpackHotMiddleware(compiler as any, {
|
|
path: "/storage/__webpack_hmr",
|
|
})
|
|
);
|
|
};
|