version.js 3.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. /* eslint-disable @typescript-eslint/no-var-requires */
  2. /** 自动记录版本信息**/
  3. const fs = require('fs')
  4. const buildPath = 'dist/' + require('./package.json').name// 放置 version.txt的路径
  5. const execSync = require('child_process').execSync // 同步子进程
  6. const date = new Date() // Date对象
  7. const isZip = true // 是否自动压缩(需要安装compressing模块)
  8. // 获取时间函数
  9. const getDate = (df, tf) => {
  10. const year = date.getFullYear(); const month = date.getMonth() + 1; const day = date.getDate(); const hour = date.getHours(); const minute = date.getMinutes()
  11. const dArr = [year, month > 9 ? month : `0${month}`, day > 9 ? day : `0${day}`]
  12. const tArr = [hour > 9 ? hour : `0${hour}`, minute > 9 ? minute : `0${minute}`]
  13. return `${dArr.join(df)}${tf ? ' ' : ''}${tArr.join(tf)}`
  14. }
  15. // 写入最新的版本信息
  16. const branch = execSync('git symbolic-ref --short -q HEAD').toString().trim() // 分支
  17. const commit = execSync('git show -s --format=%h').toString().trim() // 版本号
  18. const message = execSync('git show -s --format=%s').toString().trim() // 说明
  19. const name = execSync('git show -s --format=%cn').toString().trim() // 姓名
  20. const email = execSync('git show -s --format=%ce').toString().trim() // 邮箱
  21. // const date = execSync('git show -s --format=%cd').toString().trim(); //日期
  22. const versionStr = `git:${commit}<${branch}>\n作者:${name}<${email}>\n日期:${getDate('-', ':')}\n说明:${message}\n`
  23. fs.writeFile(`${buildPath}/version.txt`, versionStr, (err) => {
  24. if (err) console.err('写入失败', err)
  25. })
  26. // 打包文件命名
  27. const distName = `${buildPath}_${getDate('', '')}_git_${commit}`
  28. // 压缩文件
  29. if (isZip) {
  30. try {
  31. const compressing = require('compressing') // 压缩模块
  32. compressing.zip.compressDir(buildPath, `${distName}.zip`).then(() => {
  33. console.info('\x1B[32m%s\x1b[0m', '压缩成功!')
  34. }).catch(err => {
  35. console.error(err)
  36. })
  37. } catch {
  38. console.error('压缩失败!')
  39. }
  40. }
  41. // 程序运行结束
  42. console.info('\x1B[32m%s\x1b[0m', [
  43. distName,
  44. versionStr,
  45. '██████╗ ███████╗██████╗ ███████╗ █████╗ ██████╗██╗ ██╗',
  46. '██╔══██╗██╔════╝██╔══██╗██╔════╝██╔══██╗██╔════╝╚██╗ ██╔╝',
  47. '██████╔╝█████╗ ██████╔╝███████╗███████║██║ ███╗╚████╔╝ ',
  48. '██╔═══╝ ██╔══╝ ██╔══██╗╚════██║██╔══██║██║ ██║ ╚██╔╝ ',
  49. '██║ ███████╗██║ ██║███████║██║ ██║╚██████╔╝ ██║ ',
  50. '╚═╝ ╚══════╝╚═╝ ╚═╝╚══════╝╚═╝ ╚═╝ ╚═════╝ ╚═╝ '
  51. ].join('\n'))