53 lines
1.5 KiB
JavaScript
53 lines
1.5 KiB
JavaScript
// scripts/generate-version.js
|
|
import { readFileSync, writeFileSync, existsSync, mkdirSync } from 'fs'
|
|
import { resolve, dirname } from 'path'
|
|
import { fileURLToPath } from 'url'
|
|
|
|
// 获取当前目录
|
|
const __filename = fileURLToPath(import.meta.url)
|
|
const __dirname = dirname(__filename)
|
|
|
|
// 读取 .env 文件获取版本号
|
|
const envPath = resolve(__dirname, '../.env')
|
|
let version = '1.0.0'
|
|
let versionType = 'patch'
|
|
|
|
try {
|
|
if (existsSync(envPath)) {
|
|
const envContent = readFileSync(envPath, 'utf-8')
|
|
const versionMatch = envContent.match(/VITE_APP_VERSION=([^\r\n]+)/)
|
|
const typeMatch = envContent.match(/VITE_VERSION_TYPE=([^\r\n]+)/)
|
|
|
|
if (versionMatch && versionMatch[1]) {
|
|
version = versionMatch[1].replace(/['"]/g, '')
|
|
}
|
|
if (typeMatch && typeMatch[1]) {
|
|
versionType = typeMatch[1].replace(/['"]/g, '')
|
|
}
|
|
}
|
|
} catch (error) {
|
|
console.warn('无法读取 .env 文件,使用默认版本号:', error.message)
|
|
}
|
|
|
|
// 生成版本信息
|
|
const versionInfo = {
|
|
version: version,
|
|
type: versionType, // 新增版本类型
|
|
buildTime: new Date().toISOString(),
|
|
timestamp: Date.now(),
|
|
}
|
|
|
|
// 确保 dist 目录存在
|
|
const distDir = resolve(__dirname, '../dist')
|
|
if (!existsSync(distDir)) {
|
|
mkdirSync(distDir, { recursive: true })
|
|
}
|
|
|
|
// 写入 version.json
|
|
const outputPath = resolve(distDir, 'version.json')
|
|
writeFileSync(outputPath, JSON.stringify(versionInfo, null, 2))
|
|
|
|
console.log(
|
|
`✅ 版本文件已生成: ${versionInfo.version}-${versionInfo.type} (${versionInfo.buildTime})`
|
|
)
|