Node 将前端打包后的文件夹根据SVN、GIT代码版本编号压缩成Zip包

获取Svn的提交版本编号

Q: 找不到svn命令?

A: 应该是装TortoiseSvn时没有勾选。

在这里插入图片描述

import { exec } from 'child_process';

// 获取Svn版本号
function getSvnCommitHash(callback) {
    exec('svn info --show-item revision', (error, stdout, stderr) => {
        callback(stdout.trim());
    });
}

getSvnCommitHash(svnCommitHash => {
    console.log(`当前Svn版本号: ${svnCommitHash}`);
})

获取Git的提交版本编号

import { exec } from 'child_process';

// 获取Git版本号
function getGitCommitHash(callback) {
    exec('git rev-parse HEAD', (error, stdout, stderr) => {
        callback(stdout.trim());
    });
}

getGitCommitHash(gitCommitHash => {
    console.log(`当前Git版本号: ${gitCommitHash}`);
});

将Dist文件夹打包成Zip并且根据时间版号进行命名

安装依赖包

npm i jszip -D
import "@3r/tool"
import { writeFileSync, readdirSync, statSync, readFileSync } from "fs";
import JSZIP from "jszip";
const zip = new JSZIP();

// 读取文件加入包中
function readFileJoinZip(zip, nowPath) {
    let files = readdirSync(nowPath);
    files.forEach(function (fileName, index) {
        let fillPath = nowPath + "/" + fileName;
        let file = statSync(fillPath);
        if (file.isDirectory()) {
            let zipdir = zip.folder(fileName);
            readFileJoinZip(zipdir, fillPath);
        } else {
            zip.file(fileName, readFileSync(fillPath));
        }
    });
}

// 构建压缩包
function buildZip(saveFileName, targetDir = "./dist") {
    // 执行方法
    readFileJoinZip(zip, targetDir);
    zip.generateAsync({
        type: "nodebuffer",
        compression: "DEFLATE",
        compressionOptions: {
            level: 9
        }
    }).then(function (content) {
        writeFileSync("./" + saveFileName, content, "utf-8");
    });
}


import { exec } from 'child_process';

// 获取Git版本号
function getGitCommitHash(callback) {
    exec('git rev-parse HEAD', (error, stdout, stderr) => {
        callback(stdout.trim());
    });
}

// 获取Svn版本号
function getSvnCommitHash(callback) {
    exec('svn info --show-item revision', (error, stdout, stderr) => {
        callback(stdout.trim());
    });
}


getGitCommitHash(gitCommitHash => {
    console.log(`当前Git版本号: ${gitCommitHash}`);
    // timeFormat 需要安装npm i @3r/tool此依赖[非必要]
    let saveFileName = `TEST_${new Date().timeFormat('yyyyMMddhhmm')}_${String(gitCommitHash).substring(0, 8)}.zip`
    buildZip(saveFileName)
});


getSvnCommitHash(svnCommitHash => {
    console.log(`当前Svn版本号: ${svnCommitHash}`);
}) 

执行命令
zip.mjs 是上面文件的名称。

node ./zip.mjs

GitHub 地址: https://github.com/VueBricks/dist-to-zip

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

林一怂儿

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值