Node.js 直通模块仅接受8/16文件

Node.js 直通模块仅接受8/16文件,node.js,gulp,vinyl,Node.js,Gulp,Vinyl,我目前正在使用throught2模块编写gulp插件来替换缓冲区中的某些内容,下面是它的简化版本 module.exports = function(replaceData: DataChange | DataChange[]) { let count = 0; return through.obj(function (file: any, encoding: any, callback: any) { this.push(file); callback(null, fi

我目前正在使用throught2模块编写gulp插件来替换缓冲区中的某些内容,下面是它的简化版本

module.exports = function(replaceData: DataChange | DataChange[]) {
  let count = 0;
  return through.obj(function (file: any, encoding: any, callback: any) {
    this.push(file);
    callback(null, file);
    console.log('@COUNT: ', ++count);
  });
};
我发现它将只拾取8个文件并继续,忽略其他文件,我的输出如下:

@COUNT: 1
@COUNT: 2
...
@COUNT: 8
如果我没有在回调中返回任何内容

module.exports = function(replaceData: DataChange | DataChange[]) {
  let count = 0;
  return through.obj(function (file: any, encoding: any, callback: any) {
    this.push(file);
    callback();
    console.log('@COUNT: ', ++count);
  });
};
它将处理16个文件。
如何增加through将拾取的文件数?

我发现through2需要的是从可读写文件继承的流

默认可读/可写hihghWaterMark为16K。如果没有用于直通转换流释放压力的耗电元件,它将在16次记录后达到高水位线并缓冲。在回调中返回文件的情况下(情况1),它有8个文件输入和8个文件输出,这就是为什么它只选择8个

解决方案将是传递到through2选项,即

return through.obj({highWaterMark: 32}, function (file: any, encoding: any, callback: any) {
在我的情况下,它将收集32个文件

支持的选项包括:

  • 高水位线(默认为16)
  • 默认编码(默认为“utf8”)
  • 编码-“utf8”、“base64”、“utf16le”、“ucs2”等。如果指定,将向流附加一个StringDecoder解码器
  • 可读的{boolean}
  • 可写{boolean}
  • AllowAlfOpen{boolean}如果设置为false,那么当可写端结束时,流将自动结束可读端,反之亦然
希望这能帮助你,节省你的时间