From df680677b58602a8d24475cd1798bfe1a00ac08f Mon Sep 17 00:00:00 2001 From: Sebastian Martinez Date: Mon, 12 Dec 2022 17:18:35 +0100 Subject: [PATCH] Rewrites url for vite preview server paths Signed-off-by: Sebastian Martinez --- vite.config.ts | 34 +++++++++++++++++++++++++++++----- 1 file changed, 29 insertions(+), 5 deletions(-) diff --git a/vite.config.ts b/vite.config.ts index 59d49ea2c..27db4ceee 100644 --- a/vite.config.ts +++ b/vite.config.ts @@ -1,8 +1,10 @@ /// -import type { ViteDevServer } from "vite"; +import type { Connect, ViteDevServer } from "vite"; +import type http from "node:http"; -import path from "path"; +import fs from "node:fs"; +import path from "node:path"; import { defineConfig } from "vite"; import { svelte } from "@sveltejs/vite-plugin-svelte"; @@ -41,7 +43,8 @@ export default defineConfig({ dev: process.env.NODE_ENV !== "production", }, }), - pluginRewriteAll(), + configureDevServer(), + configurePreviewServer(), ], server: { // We have to set host here, otherwise CI binds to the ipv6 address and @@ -73,9 +76,9 @@ export default defineConfig({ define: defineConstants(), }); -function pluginRewriteAll() { +function configureDevServer() { return { - name: "rewrite-all", + name: "configure-dev-server", configureServer(server: ViteDevServer) { return () => { server.middlewares.use((req, _res, next) => { @@ -86,3 +89,24 @@ function pluginRewriteAll() { }, }; } + +function configurePreviewServer() { + return { + name: "configure-preview-server", + configurePreviewServer(server: { + middlewares: Connect.Server; + httpServer: http.Server; + }) { + server.middlewares.use((req, _res, next) => { + if ( + fs.existsSync(`./public${req.url}`) || + req.url?.startsWith("/assets") + ) { + return next(); + } + req.url = "/index.html"; + next(); + }); + }, + }; +}