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