jjz-deploy
Version:
基于NodeJS的前端部署工具,将前端打包好的目录进行压缩、上传到服务器、备份并且解压到服务器目录
38 lines (35 loc) • 1.08 kB
JavaScript
const fs = require('fs');
const path = require('path');
const archiver = require('archiver');
const log = require('../util/log');
module.exports = function compress (destPath, sucCb, failCb) {
if (!fs.existsSync(destPath)) {
return log.error(`不存在 ${ destPath } 目录`);
}
const filename = path.basename(destPath);
const output = fs.createWriteStream(`${ filename }.zip`);
// 写入结束
output.on('close', () => {
const kb = archive.pointer() / 1024;
const unit = kb > 100 ? 'MB' : 'KB';
log.success(`
生成的大小${ (kb > 100 ? kb / 1024 : kb).toFixed(1) + unit }
请在当前目录下寻找${ filename }.zip文件
`);
sucCb(destPath + '.zip');
});
output.on('end', () => {
log.error('压缩失败');
failCb && failCb();
});
const archive = archiver('zip', {
zlib: { level: 9 }
});
archive.on('error', () => {
log.error('压缩失败');
failCb && failCb();
});
archive.pipe(output);
archive.directory(destPath, false);
archive.finalize();
}