咕嘟咕嘟。(Gulp. How to merge files without lines duplication)
我需要将2个文件与gulp合并。 喜欢
concat = require('gulp-concat') gulp.src(['file1', 'file2']) .pipe(concat('merge')) .pipe(gulp.dest('dest/'));但没有线重复。 因此,如果两个文件包含相同的行,则合并文件只需包含此行一次。
文件1
lineA lineB lineC文件2
lineD lineA lineF合并
lineA lineB lineC lineD lineF这有插件吗? 请帮助)
I need to merge 2 files with gulp. Like
concat = require('gulp-concat') gulp.src(['file1', 'file2']) .pipe(concat('merge')) .pipe(gulp.dest('dest/'));But without lines duplication. So if two files contains same line, merge file needs to contain this line only once.
file1
lineA lineB lineCfile2
lineD lineA lineFmerge
lineA lineB lineC lineD lineFIs there some plugin for this? Help please)
最满意答案
您需要使用缓冲区映射器,这是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/'));You need to use a buffer mapper, here is 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/'));更多推荐
发布评论