serve.ts 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. import { resolve } from "node:path";
  2. import { fileURLToPath } from "node:url";
  3. import express, { NextFunction, Request, Response } from "express";
  4. import "dotenv/config";
  5. import { outputDir } from "../../rollup.config.mjs";
  6. const envPort = Number(process.env.DEV_SERVER_PORT);
  7. /** HTTP port of the dev server */
  8. const devServerPort = isNaN(envPort) || envPort === 0 ? 8710 : envPort;
  9. /** Whether to log requests to the console */
  10. const enableLogging = false;
  11. const app = express();
  12. enableLogging &&
  13. app.use((_req, _res, next) => {
  14. process.stdout.write("*");
  15. next();
  16. });
  17. app.use((err: unknown, _req: Request, _res: Response, _next: NextFunction) => {
  18. if(typeof err === "string" || err instanceof Error)
  19. console.error("\x1b[31mError in dev server:\x1b[0m\n", err);
  20. });
  21. app.use("/", express.static(
  22. resolve(fileURLToPath(import.meta.url), `../../../${outputDir}`)
  23. ));
  24. app.use("/", express.static(
  25. resolve(fileURLToPath(import.meta.url), "../../../")
  26. ));
  27. app.use("/assets", express.static(
  28. resolve(fileURLToPath(import.meta.url), "../../../assets/")
  29. ));
  30. app.listen(devServerPort, "0.0.0.0", () => {
  31. console.log(`Dev server is running on port ${devServerPort}`);
  32. if(enableLogging)
  33. process.stdout.write("\nRequests: ");
  34. else
  35. console.log("\x1b[2m(request logging is disabled)\x1b[0m");
  36. console.log();
  37. });