From 69efdd17093744f06704b865afd8d7a48f475b1e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E2=80=9Cchrisshank=E2=80=9D?= Date: Mon, 23 Dec 2024 23:47:36 -0800 Subject: [PATCH] add index redirect for dev server --- vite.config.ts | 20 +++++++++++++++++--- 1 file changed, 17 insertions(+), 3 deletions(-) diff --git a/vite.config.ts b/vite.config.ts index a71443f..af12b2c 100644 --- a/vite.config.ts +++ b/vite.config.ts @@ -1,8 +1,9 @@ -import { readdirSync } from 'node:fs'; -import { resolve } from 'node:path'; +import { existsSync, readdirSync } from 'node:fs'; +import { extname, join, resolve } from 'node:path'; import { defineConfig, IndexHtmlTransformContext, Plugin } from 'vite'; import mkcert from 'vite-plugin-mkcert'; +const websiteDir = resolve(__dirname, './website'); const canvasWebsiteDir = resolve(__dirname, './website/canvas'); function getCanvasFiles() { @@ -82,6 +83,19 @@ const linkGenerator = (): Plugin => { }; }; +const fallback = (rootDir: string): Plugin => ({ + name: 'html-index-fallback', + configureServer(server) { + server.middlewares.use((req, res, next) => { + const url = req.originalUrl; + if (url && !extname(url) && existsSync(join(rootDir, `${url}/index.html`))) { + req.url += '/index.html'; + } + next(); + }); + }, +}); + export default defineConfig({ root: 'website', resolve: { @@ -91,7 +105,7 @@ export default defineConfig({ '@propagators': resolve(__dirname, './propagators'), }, }, - plugins: [linkGenerator(), mkcert()], + plugins: [fallback(websiteDir), linkGenerator(), mkcert()], build: { target: 'esnext', rollupOptions: {