gpt4 book ai didi

javascript - 完成可写流

转载 作者:太空宇宙 更新时间:2023-11-04 01:35:55 25 4
gpt4 key购买 nike

我正在使用 gulp 来处理、缩小和捆绑我的 css 文件(还有 js)。但我不想立即写入文件。我想检查已处理内容的 md5 总和是否不等于捆绑文件现有版本的 md5 总和,并仅在这种情况下写入。

而不是立即写入文件,我尝试从进程中获取字符串形式。

但是构建不起作用。

const Stream = require('stream');
const writableStream = new Stream.Writable({ objectMode: true });

var file = "";

writableStream._write = (chunk, encoding, next) => {
file += chunk.contents.toString();
next();
}

let bundlePipe = gulp.src([...vendorLinks.map(e => path.resolve(htmlPath + e)), ...resourceLinks.map(e => path.resolve(htmlPath + e))], { sourcemaps: true })
.pipe(postcss([cssnext, cssnano]))
.pipe(concat("style.bundle.min.css"))
.pipe(writableStream);
//.pipe(gulp.dest(path.resolve(paths["html/static/css"])));


bundlePipe.on("end", () => {
// It never goes there!
console.log("get file contents", file);
}

似乎我创建的 writableStream 不知道所有数据已经​​传递给它并且从不发出结束信号。

我该怎么做才能让 writableStream 在从管道获取所有数据后关闭?

最佳答案

可写流不会发出 end,只有可读流才会发出此类事件。

可写流上的等效项是finish。您可以在 documentation 找到本次事件的详细信息Node.js 的。

可读流和可写流具有不同的事件来表示它们已结束/完成的原因是,还存在同时由可读流和可写流组成的混合流(例如 DuplexStream),因此您需要能够区分一种类型的事件和另一种类型的事件。

关于javascript - 完成可写流,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54630607/

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