import { defineConfig } from 'vite' import react from '@vitejs/plugin-react' import { readFileSync, writeFileSync } from 'fs' import { join } from 'path' // 从 config/VERSION 文件读取版本号 function getVersion() { try { const versionFile = join(__dirname, '..', 'config', 'VERSION') const content = readFileSync(versionFile, 'utf-8') const match = content.match(/^VERSION=(.*)$/m) return match ? match[1].trim() : '0.0.0' } catch (e) { console.error('读取 VERSION 文件失败:', e.message) return '0.0.0' } } const APP_VERSION = getVersion() console.log(`📦 构建版本:v${APP_VERSION}`) // 构建时自动更新 index.html 的 title function updateHtmlTitle() { try { const htmlPath = join(__dirname, 'index.html') let htmlContent = readFileSync(htmlPath, 'utf-8') // 替换 甲辰收藏 vXXX htmlContent = htmlContent.replace( /甲辰收藏 v[\d.]+<\/title>/, `<title>甲辰收藏 v${APP_VERSION}` ) writeFileSync(htmlPath, htmlContent, 'utf-8') console.log(`✅ 已更新 index.html title: 甲辰收藏 v${APP_VERSION}`) } catch (e) { console.error('更新 index.html 失败:', e.message) } } // 构建前执行 updateHtmlTitle() export default defineConfig({ plugins: [react()], define: { 'import.meta.env.APP_VERSION': JSON.stringify(APP_VERSION) }, build: { rollupOptions: { output: { entryFileNames: `assets/[name]-[hash]-[name].js`, chunkFileNames: `assets/[name]-[hash].js`, assetFileNames: `assets/[name]-[hash].[ext]` } }, // 禁用缓存 } })