build-info-plugin.ts 913 B

12345678910111213141516171819202122232425262728
  1. import fs from 'fs'
  2. import path from 'path'
  3. import { execSync } from 'child_process'
  4. import type { Plugin } from 'vite'
  5. import { formatDateTime } from '../src/utils'
  6. export default function buildInfoPlugin(mode: string): Plugin {
  7. return {
  8. name: 'build-info-plugin',
  9. closeBundle() {
  10. const pkg = JSON.parse(fs.readFileSync('./package.json', 'utf-8'))
  11. const buildInfo = {
  12. version: pkg.version,
  13. buildTime: formatDateTime(new Date()),
  14. branch: execSync('git rev-parse --abbrev-ref HEAD').toString().trim(),
  15. commitHash: execSync('git rev-parse --short HEAD').toString().trim(),
  16. env: mode,
  17. }
  18. const outDir = path.resolve(process.cwd(), 'dist')
  19. fs.writeFileSync(path.join(outDir, 'version.json'), JSON.stringify(buildInfo, null, 2))
  20. console.log('\x1b[36m📦 已生成 version.json\x1b[0m')
  21. console.log(buildInfo)
  22. },
  23. }
  24. }