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').trim() // 移除 VERSION= 前缀 if (content.startsWith('VERSION=')) { return content.substring(7).trim() } return content || '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]' } } } })