[英]Delete original files after concat in Gulp
I would like to concat my files and write it out into a single file, then I want to delete the original files. 我想合并我的文件并将其写到单个文件中,然后我想删除原始文件。 How should I solve this in my default task?
我应该如何在默认任务中解决此问题?
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);
});
Just listen for the end
event in your stream and then use del
: 只需侦听流中的
end
事件,然后使用del
:
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();
});
});
});
Thank you guys for your help, here is my final code which works fine. 谢谢大家的帮助,这是我的最终代码,可以正常工作。 I just had to create a new empty stream and return that for event-stream merge and mark this completed when the files deleted.
我只需要创建一个新的空流并将其返回以进行事件流合并,并在删除文件时将此操作标记为完成。
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);
});
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.