/* eslint-disable @typescript-eslint/no-var-requires */ /** 自动记录版本信息**/ const fs = require('fs') const buildPath = 'dist/' + require('./package.json').name// 放置 version.txt的路径 const execSync = require('child_process').execSync // 同步子进程 const date = new Date() // Date对象 const isZip = true // 是否自动压缩(需要安装compressing模块) // 获取时间函数 const getDate = (df, tf) => { const year = date.getFullYear(); const month = date.getMonth() + 1; const day = date.getDate(); const hour = date.getHours(); const minute = date.getMinutes() const dArr = [year, month > 9 ? month : `0${month}`, day > 9 ? day : `0${day}`] const tArr = [hour > 9 ? hour : `0${hour}`, minute > 9 ? minute : `0${minute}`] return `${dArr.join(df)}${tf ? ' ' : ''}${tArr.join(tf)}` } // 写入最新的版本信息 const branch = execSync('git symbolic-ref --short -q HEAD').toString().trim() // 分支 const commit = execSync('git show -s --format=%h').toString().trim() // 版本号 const message = execSync('git show -s --format=%s').toString().trim() // 说明 const name = execSync('git show -s --format=%cn').toString().trim() // 姓名 const email = execSync('git show -s --format=%ce').toString().trim() // 邮箱 // const date = execSync('git show -s --format=%cd').toString().trim(); //日期 const versionStr = `git:${commit}<${branch}>\n作者:${name}<${email}>\n日期:${getDate('-', ':')}\n说明:${message}\n` fs.writeFile(`${buildPath}/version.txt`, versionStr, (err) => { if (err) console.err('写入失败', err) }) // 打包文件命名 const distName = `${buildPath}_${getDate('', '')}_git_${commit}` // 压缩文件 if (isZip) { try { const compressing = require('compressing') // 压缩模块 compressing.zip.compressDir(buildPath, `${distName}.zip`).then(() => { console.info('\x1B[32m%s\x1b[0m', '压缩成功!') }).catch(err => { console.error(err) }) } catch { console.error('压缩失败!') } } // 程序运行结束 console.info('\x1B[32m%s\x1b[0m', [ distName, versionStr, '██████╗ ███████╗██████╗ ███████╗ █████╗ ██████╗██╗ ██╗', '██╔══██╗██╔════╝██╔══██╗██╔════╝██╔══██╗██╔════╝╚██╗ ██╔╝', '██████╔╝█████╗ ██████╔╝███████╗███████║██║ ███╗╚████╔╝ ', '██╔═══╝ ██╔══╝ ██╔══██╗╚════██║██╔══██║██║ ██║ ╚██╔╝ ', '██║ ███████╗██║ ██║███████║██║ ██║╚██████╔╝ ██║ ', '╚═╝ ╚══════╝╚═╝ ╚═╝╚══════╝╚═╝ ╚═╝ ╚═════╝ ╚═╝ ' ].join('\n'))