使用内置模块压缩文件夹
编辑 – >有人可以build议编辑我的答案,例如我不知道如果exec
更好或spawn
?
是否有可能使用zlib和其他内置模块压缩目录/文件夹的内容?
我正在寻找一种方法来做到这一点,而无需外部依赖。
另一个select是在mac,windows等上运行本地进程,用于zip,tar等,我确定在任一操作系统上都有命令行实用程序
这不是一个答案,但它与我正在寻找什么有关,它产生了一个本地进程压缩。
我正在看的另一个链接 。
unix命令为zip | exec和产卵
我在terminal上试过的命令,
- / usr / bin / zip test.zip / resources / html / article
- 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); };