59 lines
1.7 KiB
JavaScript
59 lines
1.7 KiB
JavaScript
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')
|
||
// 替换 <title>甲辰收藏 vXXX</title>
|
||
htmlContent = htmlContent.replace(
|
||
/<title>甲辰收藏 v[=\d.]+<\/title>/,
|
||
'<title>甲辰收藏 v' + APP_VERSION + '</title>'
|
||
)
|
||
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]'
|
||
}
|
||
}
|
||
}
|
||
}) |