GAAS GFrame项目web前端
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 

46 lines
2.8 KiB

/**定义模块和变量**/
const execSync = require('child_process').execSync; //同步子进程
const fs = require('fs'); //文件读取模块
const versionPath = 'version.log.js'; //version路径
const buildPath = 'dist'; //打包的路径
const autoPush = false; //写入版本信息之后是否自动提交git上
const commit = execSync('git show -s --format=%H').toString().trim(); //当前提交的版本号
/**程序开始**/
var versionStr = ""; //版本信息字符串
// 如果versionPath存在,将先读取里边的版本信息
if (fs.existsSync(versionPath)) {
versionStr = fs.readFileSync(versionPath).toString() + '\n';
}
// 根据版本信息是已存在commit,进行不同处理
if (versionStr.indexOf(commit) != -1) {
console.warn('\x1B[33m%s\x1b[0m', 'warming: 当前的git版本数据已经存在了!\n')
} else {
let name = execSync('git show -s --format=%cn').toString().trim(); //姓名
let email = execSync('git show -s --format=%ce').toString().trim(); //邮箱
let date = new Date(execSync('git show -s --format=%cd').toString()); //日期
versionStr = `console.log('git:${commit};作者:${name}<${email}>;日期:${date.getFullYear()+'-'+(date.getMonth()+1)+'-'+date.getDate()+' '+date.getHours()+':'+date.getMinutes()}')`;
fs.writeFileSync(versionPath, versionStr);
// 写入版本信息之后,自动将版本信息提交到当前分支的git上
if (autoPush) {
execSync(`git commit ${versionPath} -m 自动提交版本信息`);
execSync(`git push origin ${execSync('git rev-parse --abbrev-ref HEAD').toString().trim()}`);
}
}
// 将version文件移植到打包文件中
if (fs.existsSync(buildPath)) {
fs.writeFileSync(`${buildPath}/${versionPath}`, fs.readFileSync(versionPath));
}
// 程序执行结束
console.info('\x1B[32m%s\x1b[0m', [
"██████╗ ███████╗██████╗ ███████╗ █████╗ ██████╗██╗ ██╗",
"██╔══██╗██╔════╝██╔══██╗██╔════╝██╔══██╗██╔════╝╚██╗ ██╔╝",
"██████╔╝█████╗ ██████╔╝███████╗███████║██║ ███╗╚████╔╝ ",
"██╔═══╝ ██╔══╝ ██╔══██╗╚════██║██╔══██║██║ ██║ ╚██╔╝ ",
"██║ ███████╗██║ ██║███████║██║ ██║╚██████╔╝ ██║ ",
"╚═╝ ╚══════╝╚═╝ ╚═╝╚══════╝╚═╝ ╚═╝ ╚═════╝ ╚═╝ ",
].join('\n'));