修改 - >有人可以建议编辑我的答案,例如我不确定exec
是更好还是spawn
?
是否可以使用zlib和其他内置模块将目录/文件夹与其内容压缩?
我正在寻找一种没有外部依赖关系的方法。
另一种选择是在mac,windows等上为zip,tar等运行本地进程。我确信在任一操作系统上都有命令行实用程序
This is not an answer但它与我正在寻找的东西有某种关系,它正在产生一个拉链的本地进程。
我正在看另一个link。
Unix command for zip | exec and spawn
我在终端上尝试过的命令,
代码
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);
});
}
})
}
});
};
答案 0 :(得分:0)
在Mac上测试并且有效。有人可以在Linux上测试吗?对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());
}
});
});
}
功能zip
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);
};
答案 1 :(得分:0)
**最简单和流行的方法是-child_process exec执行命令**
const exec = require('child_process').exec;
const ls = exec(`tar -czvf filename.tar.gz dirPathToZip && mv fileName.tar.gz moveZipFileToPath`);
ls.stdout.on('data', (data) => {
console.log(`stdout: ${data}`)
});
ls.stderr.on('data', (data) => {
console.error(`stderr: ${data}`)
});
ls.on('close', (code) => {
fs.rmdirSync(pathDoDeleteDir, { recursive: true })
})