vite.config.js
1import { defineConfig } from "vite";
2import preact from "@preact/preset-vite";
3import tailwindcss from "@tailwindcss/vite";
4
5// https://vitejs.dev/config/
6export default defineConfig({
7 plugins: [
8 tailwindcss(),
9 preact({
10 include: ["**/*.res.mjs"],
11 }),
12 // Handle client-side routing for /edit/{docID} paths
13 {
14 name: "spa-fallback",
15 configureServer(server) {
16 server.middlewares.use((req, res, next) => {
17 if (/^\/edit\//.test(req.url)) {
18 req.url = "/edit.html";
19 }
20 next();
21 });
22 },
23 },
24 ],
25 server: {
26 proxy: {
27 "/route": {
28 target: "http://127.0.0.1:8080",
29 changeOrigin: true,
30 },
31 "/api": {
32 target: "http://127.0.0.1:8080",
33 changeOrigin: true,
34 },
35 "/forward": {
36 target: "http://127.0.0.1:8080",
37 changeOrigin: true,
38 },
39 "/reverse": {
40 target: "http://127.0.0.1:8080",
41 changeOrigin: true,
42 },
43 "/login": {
44 target: "http://127.0.0.1:8080",
45 changeOrigin: true,
46 },
47 "/signup": {
48 target: "http://127.0.0.1:8080",
49 changeOrigin: true,
50 },
51 "/about": {
52 target: "http://127.0.0.1:8080",
53 changeOrigin: true,
54 },
55 "/static": {
56 target: "http://127.0.0.1:8080",
57 changeOrigin: true,
58 },
59 "/u": {
60 target: "http://127.0.0.1:8080",
61 changeOrigin: true,
62 },
63 },
64 },
65 build: {
66 outDir: "../server/pages/static",
67 rollupOptions: {
68 input: {
69 edit: "edit.html",
70 },
71 output: {
72 inlineDynamicImports: true, // forces a single bundled JS file
73 entryFileNames: "js/[name].js",
74 assetFileNames: (assetInfo) => {
75 if (assetInfo.name?.endsWith(".css")) {
76 return "css/[name][extname]";
77 }
78 return "js/[name][extname]";
79 },
80 },
81 },
82 },
83});