- Upgrades webpack and webpack tool versions - Updates dev source map to webpack recommendation - Implements `webpack.DllPlugin` in dev for faster rebuilds - Implements `thread-loader` to run `ts-loader` in a worker pool
57 lines
1.4 KiB
JavaScript
57 lines
1.4 KiB
JavaScript
// @ts-check
|
|
// Serve app locally without building with webpack, e.g. for e2e
|
|
const fs = require("fs");
|
|
const path = require("path");
|
|
|
|
const express = require("express");
|
|
const { createProxyMiddleware } = require("http-proxy-middleware");
|
|
|
|
const distPath = path.join(process.cwd(), "dist");
|
|
if (!fs.existsSync(path.join(distPath, "index.html"))) {
|
|
throw new Error("dist folder is missing");
|
|
}
|
|
|
|
const dotEnvPath = path.resolve(process.cwd(), ".env.local");
|
|
require("dotenv").config({
|
|
path: dotEnvPath,
|
|
});
|
|
|
|
const devConfigs = require("../webpack.dev.js");
|
|
const [devConfig] = devConfigs;
|
|
|
|
const app = express();
|
|
|
|
/** @type {import('webpack').Configuration['devServer']} */
|
|
const devServer = devConfig.devServer;
|
|
|
|
if (!devServer) {
|
|
throw new Error("Dev server not defined in `webpack.dev.js`");
|
|
}
|
|
|
|
if (devServer.setupMiddlewares) {
|
|
// @ts-ignore Express app is compatible with `Server`
|
|
devServer.setupMiddlewares([], { app });
|
|
}
|
|
|
|
if (Array.isArray(devServer.proxy)) {
|
|
devServer.proxy.forEach((proxy) => {
|
|
app.use(
|
|
// @ts-ignore
|
|
proxy.context,
|
|
createProxyMiddleware({
|
|
...proxy,
|
|
followRedirects: true,
|
|
}),
|
|
);
|
|
});
|
|
}
|
|
|
|
app.use("/", express.static(distPath));
|
|
app.get("/*", (req, res) => {
|
|
res.sendFile(path.join(distPath, "index.html"));
|
|
});
|
|
|
|
app.listen(9871, () => {
|
|
console.log("Server listening on http://localhost:9871");
|
|
});
|