updatePackageJson.ts 1.2 KB

12345678910111213141516171819202122232425262728293031323334353637
  1. // src/plugins/updatePackageJson.ts
  2. import type { Plugin } from 'vite'
  3. import fs from 'node:fs/promises'
  4. import path from 'node:path'
  5. import process from 'node:process'
  6. function updatePackageJson(): Plugin {
  7. return {
  8. name: 'update-package-json',
  9. async buildStart() {
  10. // 只在生产环境构建时执行
  11. if (process.env.NODE_ENV !== 'production')
  12. return
  13. const packageJsonPath = path.resolve(process.cwd(), 'package.json')
  14. try {
  15. // 读取并解析 package.json
  16. const content = await fs.readFile(packageJsonPath, 'utf-8')
  17. const packageJson = JSON.parse(content)
  18. // 更新时间戳(使用 ISO 格式或自定义格式)
  19. packageJson['update-time'] = new Date().toISOString().split('T')[0] // YYYY-MM-DD
  20. // 写回文件(保持 2 空格缩进)
  21. await fs.writeFile(packageJsonPath, `${JSON.stringify(packageJson, null, 2)}\n`, 'utf-8')
  22. console.log(`[update-package-json] 更新时间戳: ${packageJson['update-time']}`)
  23. }
  24. catch (error) {
  25. console.error('[update-package-json] 插件执行失败:', error)
  26. }
  27. },
  28. }
  29. }
  30. export default updatePackageJson