2016-04-06 6 views
0

Ich möchte meine Dateien concat und schreibe es in eine einzige Datei, dann möchte ich die Originaldateien löschen. Wie soll ich das in meiner Standardaufgabe lösen?Original-Dateien nach concat in Gulp löschen

var es = require('event-stream'); 
var concat = require('gulp-concat'); 
var unique = require('array-unique'); 

function concatGroup(groupName, group){ 

    return gulp.src(unique(group.files)) 
     .pipe(concat(groupName + '.js')) 
     .pipe(gulp.dest(group.target)); 
} 

gulp.task('default', function() { 
    var groups = { 
     test: { 
      files: [array of files], 
      target: "target dir" 
     }, 
     test2: { 
      files: [array of files], 
      target: "target dir" 
     }, 
     test3: { 
      files: [array of files], 
      target: "target dir" 
     } 
    }; 

    var streams = []; 
    for (var groupName in groups) { 
     streams.push(concatGroup(groupName, groups[groupName])); 
    } 
    return es.concat.apply(es, streams); 
}); 

Antwort

2

Hören Sie nur für das end Ereignis in Ihrem Stream und dann del verwenden:

var concat = require('gulp-concat'); 
var unique = require('array-unique'); 
var del = require('del'); 

gulp.task('default', function (done) { 
    var groupName = "test", 
     group = { 
     files: [array of files], 
     target: "target dir" 
     }; 

    var files = unique(group.files) 
    gulp.src(files) 
    .pipe(concat(groupName + '.js')) 
    .pipe(gulp.dest(group.target)) 
    .on('end', function() { 
     del(files).then(function() { 
     done(); 
     }); 
    }); 
}); 
+0

Garantiert das Endereignis, dass das Löschen mit seiner Aufgabe vor der nächsten Aufgabe beendet wird, die von der "Standard" -Aufgabe abhängt, z. B. das Verzeichnis zippen? –

+1

Es ist nicht das 'end'-Ereignis, das dies garantiert, aber der' done() '-Rückruf tut das, ja. –

+0

Danke, ich habe auch meine Frage aktualisiert, könntest du einen Blick darauf werfen? Ich konnte Ihre Lösung in meinem Fall nicht implementieren. Jetzt ist mein Beispiel viel näher an dem, das ich in meinem Projekt verwende. –

0

Danke Jungs für Ihre Hilfe, hier mein letzter Code ist, der gut arbeitet. Ich musste nur einen neuen leeren Stream erstellen und diesen für die Ereignis-Stream-Zusammenführung zurückgeben und dies als abgeschlossen markieren, wenn die Dateien gelöscht wurden.

var es = require('event-stream'); 
var concat = require('gulp-concat'); 
var unique = require('array-unique'); 
var del = require('del'); 

function concatGroup(groupName, group) { 

    var stream = through.obj(); 

    gulp.src(unique(group.files)) 
     .pipe(concat(groupName + '.js')) 
     .pipe(gulp.dest(group.target)) 
     .on('end', function() { 
      del(group.files).then(function() { 
       stream.end(); 
      }); 
     }); 

    return stream; 
} 

gulp.task('default', function() { 
    var groups = { 
     test: { 
      files: [array of files], 
      target: "target dir" 
     }, 
     test2: { 
      files: [array of files], 
      target: "target dir" 
     }, 
     test3: { 
      files: [array of files], 
      target: "target dir" 
     } 
    }; 

    var streams = []; 
    for (var groupName in groups) { 
     streams.push(concatGroup(groupName, groups[groupName])); 
    } 
    return es.concat.apply(es, streams); 
}); 
Verwandte Themen