jiachenlong/frontend/vite.config.js

59 lines
1.6 KiB
JavaScript
Raw Permalink Normal View History

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')
// 替换 <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]`
}
},
// 禁用缓存
manifest: true
}
})