我需要将2个文件与gulp合并。像
concat = require('gulp-concat')
gulp.src(['file1', 'file2'])
.pipe(concat('merge'))
.pipe(gulp.dest('dest/'));
但没有重复的行。因此,如果两个文件包含相同的行,则合并文件只需包含此行一次。
文件1
lineA
lineB
lineC
file2的
lineD
lineA
lineF
合并
lineA
lineB
lineC
lineD
lineF
这有插件吗?请帮助)
答案 0 :(得分:3)
您需要使用缓冲区映射器,以下是map-stream的示例:
var concat = require('gulp-concat');
var map = require('map-stream');
var uniqueFilterFn = function(item, idx, all) {
return idx === all.indexOf(item);
};
gulp.src(['file1', 'file2'])
.pipe(concat('merge'))
.pipe(map(function(file, cb) {
// convert file buffer into a string
var contents = file.contents.toString();
// split it by lines
var lines = contents.split(/[\r\n]/);
// apply the unique filter
var uniqueLines = lines.filter(uniqueFilterFn);
// join unique list into lines
var output = uniqueLines.join('\n');
// convert string back into buffer
var buffer = new Buffer(output, 'binary');
// replace the file contents
file.contents = buffer;
// continue
return cb(null, file);
}))
.pipe(gulp.dest('dest/'));