我已经开始使用Gulp JS,并且必须承认我发现它非常有用。如何使用Gulp Zip压缩zip文件
我需要执行的任务之一是将文件夹集合压缩成单独的zip文件,每个文件夹一个,然后将所有这些压缩文件压缩成一个zip文件。使用咕嘟咕嘟-Zip的我已经成功地走到这一步:
var modelFolders = [
'ELFH_Check',
'ELFH_DDP',
'ELFH_Free'
];
gulp.task('zipModels', function() {
for (var i = 0; i < modelFolders.length; i++) {
var model = modelFolders[i];
gulp.src('**/*', {cwd: path.join(process.cwd(), '/built_templates/' + model) })
.pipe(zip(model + '.zip'))
.pipe(gulp.dest('./built_templates'));
};
});
这工作和输出ELFH_Check.zip,ELFH_DDP.zip和ELFH_Free.zip。不过,我接下来需要这些zip文件压缩成所谓的“Templates.zip”和我没有管理的一个zip文件得到这个任务的工作:
// zip up model files
gulp.task('zipTemplate', ['zipModels'], function() {
gulp.src('*.zip', {cwd: path.join(process.cwd(), './built_templates/') })
.pipe(zip('Templates_.zip'))
.pipe(gulp.dest('./built_templates'));
});
有谁知道这是可能的,或者什么我做错了?
他的解决方案可以工作 - 除非他没有从'zipModels'任务返回流。但是,您的解决方案更好,因为它可以避免临时文件。 – OverZealous
谢谢,这太棒了。我已经使用了上面提供的代码,它的工作非常好。我也理解你提出的有关简单流和避免使用临时文件的观点。不幸的是,即使不使用临时文件,Gulp中的压缩过程也需要32秒才能运行,而使用调用7压缩文件的批处理文件需要大约7到9秒。我能想到的唯一解决方案是使用我的gulp.js文件中的gulp-exec来调用7 zip代替?尽管我接受其他建议。 – Robini
我认为这与主要问题有点不同,可以考虑另外提出一个问题。但是如果你想提高性能,你可能需要调用'exec'。这没有问题。考虑为此插入一个插件,并且为'gulp.src'传递'{read:false}',因为你并不需要这些文件的内容,只需要拍一些。最好的方法是将内容传送到命令行实用程序,但[它不允许使用zip文件](http://sevenzip.sourceforge.jp/chm/cmdline/switches/stdin.htm),如果只能使用7zip的。 –