【问题标题】:Use node.js stream to create a file and pipe to gulp使用 node.js 流创建文件和管道到 gulp
【发布时间】:2023-04-06 10:11:01
【问题描述】:

我正在使用 node.js。我有一个缓冲区,我需要将它写入一个名为“bla.js”的文件,然后管道 gulp 的 uglify。比如:

var uglify = require('gulp-uglify');

var buffer = ....
var wstream = fs.createWriteStream('bla.js');
wstream.write(buffer);
wstream.pipe(uglify());

正确的做法是什么?

【问题讨论】:

    标签: javascript node.js gulp fs


    【解决方案1】:

    据我所知,您应该能够多次在可读流上调用pipe(),并将内容发送到两个不同的可写流。

    例如(干编码):

    var fs = require('fs')
    ,   uglify = require('gulp-uglify');
    
    var rstream = fs.createReadStream('test.log');
    rstream.pipe(fs.createWriteStream('bla.js'));
    rstream.pipe(uglify());
    

    【讨论】:

    • 我没有要读取的文件。我有一个从因子捆绑接收的缓冲区(带有可写流的示例):github.com/substack/factor-bundle
    • 只要rstream 是可读流,我认为它应该可以工作。
    • 如果你想提供帮助,你必须阅读github.com/substack/factor-bundle 因为我正在尝试解决与他们的示例相关的问题。
    【解决方案2】:

    看起来插件vinyl-source-stream 为您想要做的事情提供了解决方案:

    var source = require('vinyl-source-stream')
    var streamify = require('gulp-streamify')
    var browserify = require('browserify')
    var fs = require('vinyl-fs');
    var uglify = require('gulp-uglify');
    
    var bundleStream = browserify('index.js').bundle()
    
    bundleStream
      .pipe(source('index.js'))
      .pipe(streamify(uglify()))
      .pipe(fs.dest('./bla.js'))
    

    【讨论】:

    • 试试看得到“TypeError: Arguments to path.resolve must be strings”
    • 我正在尝试在 factor bundle (github.com/substack/factor-bundle) 的输出上运行 gulp-uglify 你能帮忙吗?
    • 伙计,我正在使用 factor bundle,它是 browserify 的一个插件。我单独解决了browserify的情况。我正在尝试修复这些因素的丑化。非常感谢您的帮助。
    • 在编写之前,您没有看到包是如何通过管道传输到 gulp-uglify 的吗?或许可以直接查看vinyl-source-stream 文档:github.com/hughsk/vinyl-source-stream
    • 我已经多次阅读乙烯基源流文档。 .这不是我正在寻找的答案,相信我。你读过 factor-bundle 的文档吗?
    猜你喜欢
    • 2015-02-10
    • 1970-01-01
    • 2013-07-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-10-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多