Gulp. How to combine files without duplicate lines
I need to combine 2 files with gulp. how
concat = require('gulp-concat')
gulp.src(['file1', 'file2'])
.pipe(concat('merge'))
.pipe(gulp.dest('dest/'));
But no duplicate lines. Therefore, if two files contain the same line, the merge file should only contain that line once.
file1
lineA
lineB
lineC
file2
lineD
lineA
lineF
mergers
lineA
lineB
lineC
lineD
lineF
Is there a plugin for this? Help me please)
+3
source to share
1 answer
You need to use a buffer configurator, here's an example with 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/'));
+3
source to share