gpt4 book ai didi

javascript - 如何通过 gulp 插件运行缓冲区?

转载 作者:行者123 更新时间:2023-12-03 06:18:51 24 4
gpt4 key购买 nike

我正在尝试编写一个函数,让您可以使用任何 gulp 插件作为简单的内存缓冲区转换器(隐藏所有流/乙烯基内容)。例如,可以这样调用:

const gulpMinifyHtml = require('gulp-minify-html');

transformBufferWithGulpPlugin(inputBuffer, gulpMinifyHtml()).then(outputBuffer => {
// outputBuffer should now be a minified version of inputBuffer
});

(注意。我正在寻找一种使用任何 gulp 插件执行此操作的通用方法;gulp-minify-html 只是一个示例。)

<小时/>

看起来这很容易,但我正在费尽心思地试图让它发挥作用。我认为我需要做的是:

  1. 构造一个新的 Vinyl 实例,其内容设置为 inputBuffer
  2. 将此乙烯基实例放入对象流中(?)
  3. 通过 gulp 插件传输对象流
  4. 从流中收集输出
  5. 当流完成输出时,从乙烯基实例中获取内容缓冲区,并用它进行解析。

这些步骤基本正确吗?任何人都可以向我展示一个工作示例,或者向我指出一个可以实现该功能的模块吗?

最佳答案

以下内容应该有效。这使用 stream-array创建流。

var File = require('vinyl');
var streamify = require('stream-array');

function transformBufferWithGulpPlugin(inputBuffer, gulpPlugin) {
return new Promise(function(resolve, reject) {
streamify([new File({path:'dummy', contents:inputBuffer})])
.pipe(gulpPlugin)
.on('error', reject)
.on('data', function(file) {
resolve(file.contents);
});
});
}

var minify = require('gulp-html-minify');

transformBufferWithGulpPlugin(new Buffer('<p>\n Test \n</p>'), minify())
.then(function(result) {
console.log(result.toString());
}, function(error) {
console.error(error);
});

并非严格需要像上面那样指定虚拟 path (vinyl 不需要它),但某些插件可能仅在存在 路径属性。

关于javascript - 如何通过 gulp 插件运行缓冲区?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38956701/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com