Node.js 直通模块仅接受8/16文件
我目前正在使用throught2模块编写gulp插件来替换缓冲区中的某些内容,下面是它的简化版本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
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,那么当可写端结束时,流将自动结束可读端,反之亦然