我已經開始使用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的。 –