咕嘟咕嘟。(Gulp. How to merge files without lines duplication)

编程入门 行业动态 更新时间:2024-10-12 18:22:09
咕嘟咕嘟。(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 lineC

file2

lineD lineA lineF

merge

lineA lineB lineC lineD lineF

Is 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/'));

更多推荐

本文发布于:2023-08-03 07:18:00,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1385413.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:merge   Gulp   files   duplication   lines

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!