nodejs自动导出文件夹并生成压缩包

因为项目在内网svn上需要权限才能访问,因此每次跟第三方同步个别项目代码都很痛苦,试过git等方式,也不太理想第三方不一定熟悉操作还需要指导费时费力,因此使用nodejs封装一个插件,来自动导出项目压缩包,第一次使用需要修改下target里的目录地址,后续每次只需在命令行执行即可直接在桌面生成压缩包

安装依赖

依赖的库只有 archiver 这个
直接 在需要的项目 npm install archiver 即可
这个库的文档地址
https://github.com/archiverjs/node-archiver

使用方法

将需要导出的目录添加到target数组中 命令行执行 node export-zip.js (node后边是这个文件的路径)即可

核心代码 export-zip.js 内容

/**
 * @author 凌晨
 * @description
 * 快速导出压缩包 需要安装依赖 npm install archiver
 * 这个库的文档地址 https://github.com/archiverjs/node-archiver
 *
 * @example  将需要导出的目录添加到target数组中 命令行执行 node export-zip.js 即可
 * @version 20210714
 */

const fs = require('fs');
const archiver = require('archiver');
const os = require('os');
const homedir = os.homedir();
const timeString = new Date().toLocaleDateString().replace(/\//g, '-'); // 日期充当hash值防止覆盖之前的压缩包

//配置要打包的路径列表,需要打包某些目录,添加到数组里面即可 相对路径
const target = ['xtl/zbjc', 'act/xtl/zbjc']

// 默认在桌面生成此文件 activity-ui+日期.zip
const output = fs.createWriteStream(homedir + '/Desktop/activity-ui' + timeString + '.zip');
const archive = archiver('zip', {
    zlib: { level: 9 } // 设置压缩级别
});

archive.on('error', function (err) {
    throw err;
});

output.on('close', function () {
    console.log(`
    --------- ---------压缩完毕--------- ---------
    生成文件大小${(archive.pointer() / 1024 / 1024).toFixed(1)}MB
    请在桌面查找activity-ui${timeString}.zip
    ---------如需配置生成路径或文件名,请配置output---------
    `);
});

archive.pipe(output);
for (i of target) { archive.directory(i, i) }
archive.finalize();


我的个人公众号:归园田居 每日分享前端知识与资讯~
请添加图片描述

你可能感兴趣的:(nodejs,javascript,github,zip,信息压缩,1024程序员节)