feat: version banner UI + GET /api/v1/version backend endpoint
This commit is contained in:
@@ -4,8 +4,37 @@ import react from '@vitejs/plugin-react'
|
||||
import tailwindcss from '@tailwindcss/vite'
|
||||
import { TanStackRouterVite } from '@tanstack/router-vite-plugin'
|
||||
import path from 'path'
|
||||
import { execSync } from 'node:child_process'
|
||||
import { readFileSync } from 'node:fs'
|
||||
|
||||
// Build identity injected at compile time. Used by /update banner — client
|
||||
// сравнивает свой commit с server's /api/v1/version и показывает "Доступна
|
||||
// новая версия" если различаются.
|
||||
//
|
||||
// Fallbacks для CI / sandboxed builds где git unavailable: env var override,
|
||||
// затем "unknown".
|
||||
const APP_VERSION: string = JSON.parse(
|
||||
readFileSync(path.resolve(__dirname, 'package.json'), 'utf-8'),
|
||||
).version
|
||||
const APP_COMMIT: string =
|
||||
process.env.CI_COMMIT_SHORT_SHA ??
|
||||
(() => {
|
||||
try {
|
||||
return execSync('git rev-parse --short HEAD', { stdio: ['ignore', 'pipe', 'ignore'] })
|
||||
.toString()
|
||||
.trim()
|
||||
} catch {
|
||||
return 'unknown'
|
||||
}
|
||||
})()
|
||||
const APP_BUILT_AT: string = new Date().toISOString()
|
||||
|
||||
export default defineConfig({
|
||||
define: {
|
||||
__APP_VERSION__: JSON.stringify(APP_VERSION),
|
||||
__APP_COMMIT__: JSON.stringify(APP_COMMIT),
|
||||
__APP_BUILT_AT__: JSON.stringify(APP_BUILT_AT),
|
||||
},
|
||||
test: {
|
||||
environment: 'jsdom',
|
||||
setupFiles: ['./src/test/setup.ts'],
|
||||
|
||||
Reference in New Issue
Block a user