最新消息: 电脑我帮您提供丰富的电脑知识,编程学习,软件下载,win7系统下载。

完成写流

IT培训 admin 2浏览 0评论

完成写流

我使用一饮而尽处理,缩小和捆绑我的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。你可以找到关于此事件的细节Node.js的的documentation

之所以可读和可写的流具有不同的事件表明它们已结束/完成的是,也有它由一个可读的流,并在同一时间写流的混合流(如DuplexStream),因此你需要能够一个和另一个类型的事件之间不同。

完成写流

我使用一饮而尽处理,缩小和捆绑我的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。你可以找到关于此事件的细节Node.js的的documentation

之所以可读和可写的流具有不同的事件表明它们已结束/完成的是,也有它由一个可读的流,并在同一时间写流的混合流(如DuplexStream),因此你需要能够一个和另一个类型的事件之间不同。

与本文相关的文章

发布评论

评论列表 (0)

  1. 暂无评论