使用内置模块压缩文件夹

编辑 – >有人可以build议编辑我的答案,例如我不知道如果exec更好或spawn


是否有可能使用zlib和其他内置模块压缩目录/文件夹的内容?

我正在寻找一种方法来做到这一点,而无需外部依赖。

另一个select是在mac,windows等上运行本地进程,用于zip,tar等,我确定在任一操作系统上都有命令行实用程序

这不是一个答案,但它与我正在寻找什么有关,它产生了一个本地进程压缩。

我正在看的另一个链接 。

unix命令为zip | exec和产卵

我在terminal上试过的命令,

  1. / usr / bin / zip test.zip / resources / html / article
  2. du -hs test.zip

 var zip = function(path) { const spawn = require('child_process').spawn; const exec = require('child_process').exec; exec("which zip", function (error, stdout, stderr) { if (error) { console.log(error); } else { exec(stdout + " -r " + path + "/test.zip " + path, function(error, stdout, stderr){ if(error) { console.log(error); } else { exec("du -hs test.zip", function(error, stdout, stderr){ console.log('done'); console.log(arguments); }); } }) } }); }; 

在Mac和testing工作。 有人可以在Linux上testing这个吗? 任何想法的Windows?

注意使用stdout.trim()来摆脱从控制台返回的额外\n字符。

 function execute(command) { const exec = require('child_process').exec; return new Promise(function(resolve, reject){ exec(command, function(error, stdout, stderr){ if(error) { reject(error); } else { stderr ? reject(stderr) : resolve(stdout.trim()); } }); }); } 

function压缩

 var zip = function(path) { execute("which zip") .then(function(zip){ return execute(zip + " -r abc.zip " + path); }) .then(function(result){ return execute("du -hs abc.zip"); }) .then(function(result){ console.log(result); }) .catch(console.error); };