From f1d797295c6c76350b741f7ceda775b41048551d Mon Sep 17 00:00:00 2001 From: ReaJason Date: Sun, 23 Feb 2025 01:59:43 +0800 Subject: [PATCH] build(ui): support base_path --- web/.env | 3 ++- web/.env.production | 3 ++- web/bun.lockb | Bin 187804 -> 187852 bytes web/package.json | 16 ++++++++-------- web/src/config.ts | 1 + web/src/main.tsx | 1 + web/vite.config.ts | 2 +- 7 files changed, 15 insertions(+), 11 deletions(-) diff --git a/web/.env b/web/.env index 292fa09d..1f867a91 100644 --- a/web/.env +++ b/web/.env @@ -1 +1,2 @@ -VITE_APP_API_URL=http://127.0.0.1:8080 \ No newline at end of file +VITE_APP_API_URL=http://127.0.0.1:8080 +VITE_APP_BASE_PATH=/ \ No newline at end of file diff --git a/web/.env.production b/web/.env.production index 7decfda6..7ff78958 100644 --- a/web/.env.production +++ b/web/.env.production @@ -1 +1,2 @@ -VITE_APP_API_URL= \ No newline at end of file +VITE_APP_API_URL= +VITE_APP_BASE_PATH=/ \ No newline at end of file diff --git a/web/bun.lockb b/web/bun.lockb index 74e0eb973847dbd975030e1bd04a6e054b82d69b..0de4d625a36a93a7f09529b911a228fe022b6d15 100755 GIT binary patch delta 4941 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 N6>L6#p^!`|D<{=RD6__Q|{7y_4*mmJ8F1 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 diff --git a/web/package.json b/web/package.json index 95c7de10..b852a30f 100644 --- a/web/package.json +++ b/web/package.json @@ -13,19 +13,19 @@ }, "devDependencies": { "@biomejs/biome": "1.9.4", - "@tanstack/router-plugin": "^1.106.0", - "@types/node": "^22.13.4", + "@tanstack/router-plugin": "^1.109.2", + "@types/node": "^22.13.5", "@types/react": "^19.0.10", "@types/react-dom": "^19.0.4", "@vitejs/plugin-react": "^4.3.4", "@types/react-copy-to-clipboard": "^5.0.7", "@types/react-syntax-highlighter": "^15.5.13", - "tailwindcss": "^4.0.7", + "tailwindcss": "^4.0.8", "typescript": "^5.7.3", "vite": "^6.1.1" }, "dependencies": { - "@hookform/resolvers": "^4.1.0", + "@hookform/resolvers": "^4.1.1", "@radix-ui/react-alert-dialog": "^1.1.6", "@radix-ui/react-checkbox": "^1.1.4", "@radix-ui/react-dropdown-menu": "^2.1.6", @@ -37,10 +37,10 @@ "@radix-ui/react-switch": "^1.1.3", "@radix-ui/react-tabs": "^1.1.3", "@radix-ui/react-tooltip": "^1.1.8", - "@tailwindcss/vite": "^4.0.7", - "@tanstack/react-query": "^5.66.8", - "@tanstack/react-router": "^1.106.0", - "@tanstack/router-devtools": "^1.106.0", + "@tailwindcss/vite": "^4.0.8", + "@tanstack/react-query": "^5.66.9", + "@tanstack/react-router": "^1.109.2", + "@tanstack/router-devtools": "^1.109.2", "class-variance-authority": "^0.7.1", "clsx": "^2.1.1", "i18next": "^24.2.2", diff --git a/web/src/config.ts b/web/src/config.ts index 729555e3..88ac4e44 100644 --- a/web/src/config.ts +++ b/web/src/config.ts @@ -2,6 +2,7 @@ import * as z from "zod"; const EnvSchema = z.object({ API_URL: z.optional(z.string()), + BASE_PATH: z.optional(z.string()), MODE: z.string(), }); diff --git a/web/src/main.tsx b/web/src/main.tsx index e6c4a850..4a293442 100644 --- a/web/src/main.tsx +++ b/web/src/main.tsx @@ -12,6 +12,7 @@ const queryClient = new QueryClient(); const router = createRouter({ routeTree, + basepath: env.BASE_PATH, defaultPreload: "intent", }); diff --git a/web/vite.config.ts b/web/vite.config.ts index a8690dd3..e912c489 100644 --- a/web/vite.config.ts +++ b/web/vite.config.ts @@ -6,7 +6,7 @@ import { defineConfig } from "vite"; // https://vitejs.dev/config/ export default defineConfig({ - plugins: [TanStackRouterVite({}), react(), tailwindcss()], + plugins: [TanStackRouterVite(), react(), tailwindcss()], resolve: { alias: { "@": path.resolve(__dirname, "./src"),