From a20a76eb44c0efc7bf5693f920cb3c15b85f28e9 Mon Sep 17 00:00:00 2001 From: Nate Kelley Date: Mon, 22 Sep 2025 16:56:43 -0600 Subject: [PATCH] added vite config for asset bundling --- .../ui/layouts/AppPageLayoutContent.tsx | 6 +++++- .../src/context/AppVersion/useAppVersion.tsx | 1 + apps/web/vite.config.ts | 17 +++++++++++++---- 3 files changed, 19 insertions(+), 5 deletions(-) diff --git a/apps/web/src/components/ui/layouts/AppPageLayoutContent.tsx b/apps/web/src/components/ui/layouts/AppPageLayoutContent.tsx index a9d16bb09..ab43dd2a0 100644 --- a/apps/web/src/components/ui/layouts/AppPageLayoutContent.tsx +++ b/apps/web/src/components/ui/layouts/AppPageLayoutContent.tsx @@ -15,7 +15,11 @@ export const AppPageLayoutContent: React.FC< return ( {children} diff --git a/apps/web/src/context/AppVersion/useAppVersion.tsx b/apps/web/src/context/AppVersion/useAppVersion.tsx index a63873a59..e5e8412df 100644 --- a/apps/web/src/context/AppVersion/useAppVersion.tsx +++ b/apps/web/src/context/AppVersion/useAppVersion.tsx @@ -29,6 +29,7 @@ export const useAppVersion = () => { }); useEffect(() => { + console.log('isChanged', data?.buildId, browserBuild); if (isChanged) { openInfoNotification({ duration: Infinity, diff --git a/apps/web/vite.config.ts b/apps/web/vite.config.ts index 49903f076..a4d194cce 100644 --- a/apps/web/vite.config.ts +++ b/apps/web/vite.config.ts @@ -1,3 +1,4 @@ +import { execSync } from 'node:child_process'; import tailwindcss from '@tailwindcss/vite'; import { tanstackStart } from '@tanstack/react-start/plugin/vite'; import viteReact from '@vitejs/plugin-react'; @@ -5,6 +6,8 @@ import { defineConfig } from 'vite'; import checker from 'vite-plugin-checker'; import viteTsConfigPaths from 'vite-tsconfig-paths'; +const commitHash = execSync('git rev-parse --short HEAD').toString().trim(); + const config = defineConfig(({ command, mode }) => { const isBuild = command === 'build'; const isProduction = mode === 'production' || mode === 'staging'; @@ -13,14 +16,20 @@ const config = defineConfig(({ command, mode }) => { const isLocalBuild = process.argv.includes('--local') || mode === 'development'; const target = isLocalBuild ? ('bun' as const) : ('vercel' as const); - // Generate a unique build ID for cache busting after deployments - const buildId = `build:${process.env.VERCEL_GIT_COMMIT_SHA?.slice(0, 8) || process.env.BUILD_ID || Date.now().toString()}`; - const buildAt = new Date().toISOString(); + // Generate a unique version identifier for both build tracking and asset versioning + const buildId = + process.env.VERCEL_GIT_COMMIT_SHA?.slice(0, 8) || + process.env.BUILD_ID || + (isProduction ? commitHash : 'dev'); + const buildAt = new Date().toString(); + + // Set the base URL for assets with versioning in production + const base = '/'; return { + base, server: { port: 3000 }, define: { - // Make the build ID available to the app for version tracking 'import.meta.env.VITE_BUILD_ID': JSON.stringify(buildId), 'import.meta.env.VITE_BUILD_AT': JSON.stringify(buildAt), },