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







All Articles