getVersion.mjs 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  1. import dayjs from 'dayjs'
  2. import { exec } from 'child_process'
  3. import semver from 'semver'
  4. import { readFileSync, writeFileSync } from 'fs'
  5. const versionFile = './public/version.json'
  6. main()
  7. /**
  8. * 写入json文件
  9. * @param {*} version
  10. * @param {*} fileDirName
  11. */
  12. function writeJson(version, fileDirName) {
  13. try {
  14. writeFileSync(fileDirName, JSON.stringify(version, null, 2), { flag: 'w+', encoding: 'utf-8' })
  15. console.log(`-> 写入 ${fileDirName} 成功`)
  16. } catch (err) {
  17. console.error(`-> 写入 ${fileDirName} 失败: `)
  18. console.error(err)
  19. throw err
  20. }
  21. }
  22. /**
  23. * 获取最新的版本号
  24. * @returns
  25. */
  26. function getLatestVersion() {
  27. return new Promise((resolve, reject) => {
  28. return exec('git describe --abbrev=0 --tags', (err, version) => {
  29. if (err) {
  30. reject()
  31. console.error('获取版本号失败:', err)
  32. } else {
  33. console.log('最新版本号:', version)
  34. exec('git rev-parse HEAD', (err, hash) => {
  35. if (err) {
  36. reject()
  37. console.error('获取版本号失败:', err)
  38. } else {
  39. console.log('最新HASH:', hash)
  40. resolve({ version: version.trim(), hash: hash.trim() })
  41. }
  42. })
  43. }
  44. })
  45. })
  46. }
  47. // 主函数
  48. function main() {
  49. getLatestVersion().then(({ version, hash }) => {
  50. const content = readFileSync(versionFile, 'utf-8')
  51. const packageInfo = JSON.parse(content)
  52. packageInfo.version = version
  53. packageInfo.hash = hash
  54. packageInfo.updateTime = dayjs().format('YYYY-MM-DD HH:mm:ss')
  55. writeJson(packageInfo, versionFile)
  56. })
  57. }