Node.js 使用Through2从乙烯基流创建多个文件

Node.js 使用Through2从乙烯基流创建多个文件,node.js,gulp,through2,Node.js,Gulp,Through2,我一直试图自己解决这个问题,但还没有成功。我甚至不知道如何开始对此进行研究(尽管我已经尝试了一些谷歌搜索,但没有结果),所以我决定在这里问这个问题 是否可以从Through2对象流返回多个乙烯基文件 我的用例是这样的:我通过流接收HTML文件。我想隔离文件的两个不同部分(使用jQuery),并在两个单独的HTML文件中返回它们。我可以用一个节(和一个生成的HTML文件)来完成,但我完全不知道如何生成两个不同的文件 有人能帮我一下吗? 提前感谢。基本方法如下: 使用函数从输入文件创建所需数量的输出

我一直试图自己解决这个问题,但还没有成功。我甚至不知道如何开始对此进行研究(尽管我已经尝试了一些谷歌搜索,但没有结果),所以我决定在这里问这个问题

是否可以从Through2对象流返回多个乙烯基文件

我的用例是这样的:我通过流接收HTML文件。我想隔离文件的两个不同部分(使用jQuery),并在两个单独的HTML文件中返回它们。我可以用一个节(和一个生成的HTML文件)来完成,但我完全不知道如何生成两个不同的文件

有人能帮我一下吗?
提前感谢。

基本方法如下:

  • 使用函数从输入文件创建所需数量的输出文件

  • 根据要执行的操作修改每个文件的属性。别忘了这是一个,不是一个字符串

  • 修改每个文件的属性,使文件不会相互覆盖。这是一条绝对的路径,所以请使用类似和的方法使事情变得更简单

  • 从中为您创建的每个文件调用this.push()

  • 下面是一个快速示例,它将一个文件
    test.txt
    拆分为两个同样大的文件
    test1.txt
    test2.txt

    var gulp = require('gulp');
    var through = require('through2').obj;
    var path = require('path');
    
    gulp.task('default', function () {
      return gulp.src('test.txt')
        .pipe(through(function(file, enc, cb) {
           var c = file.contents.toString();
           var f = path.parse(file.path);
           var file1 = file.clone();
           var file2 = file.clone();
           file1.contents = new Buffer(c.substring(0, c.length / 2));
           file2.contents = new Buffer(c.substring(c.length / 2));
           file1.path = path.join(f.dir, f.name + '1' + f.ext);
           file2.path = path.join(f.dir, f.name + '2' + f.ext);
           this.push(file1);
           this.push(file2);
           cb();
        }))
        .pipe(gulp.dest('out'));
    });
    

    基本方法如下:

  • 使用函数从输入文件创建所需数量的输出文件

  • 根据要执行的操作修改每个文件的属性。别忘了这是一个,不是一个字符串

  • 修改每个文件的属性,使文件不会相互覆盖。这是一条绝对的路径,所以请使用类似和的方法使事情变得更简单

  • 从中为您创建的每个文件调用this.push()

  • 下面是一个快速示例,它将一个文件
    test.txt
    拆分为两个同样大的文件
    test1.txt
    test2.txt

    var gulp = require('gulp');
    var through = require('through2').obj;
    var path = require('path');
    
    gulp.task('default', function () {
      return gulp.src('test.txt')
        .pipe(through(function(file, enc, cb) {
           var c = file.contents.toString();
           var f = path.parse(file.path);
           var file1 = file.clone();
           var file2 = file.clone();
           file1.contents = new Buffer(c.substring(0, c.length / 2));
           file2.contents = new Buffer(c.substring(c.length / 2));
           file1.path = path.join(f.dir, f.name + '1' + f.ext);
           file2.path = path.join(f.dir, f.name + '2' + f.ext);
           this.push(file1);
           this.push(file2);
           cb();
        }))
        .pipe(gulp.dest('out'));
    });
    

    我不知道有克隆功能。非常感谢你的帮助!4年后,你的回答结束了长时间在谷歌上搜索这些信息的过程。。。在一个典型的Gulp管道中有这么多插件/依赖项,很难了解哪个库可以解决给定的问题!在我的例子中,我已经在使用through2了,但我不知道我应该仔细看看它!河水很硬。感谢您提供的详细示例!我不知道有克隆功能。非常感谢你的帮助!4年后,你的回答结束了长时间在谷歌上搜索这些信息的过程。。。在一个典型的Gulp管道中有这么多插件/依赖项,很难了解哪个库可以解决给定的问题!在我的例子中,我已经在使用through2了,但我不知道我应该仔细看看它!河水很硬。感谢您提供的详细示例!