javascript – 我可以将gulp流转换为String吗?

我想在gulp流中应用一些任务并获取输出字符串.我不想创建一个新文件.

这是我的代码:

function buildCSS() {

    // READ A FILE AND APPLY SOME TASKS
    var content = gulp.src(__dirname + '/src/styles.less')
        .pipe(g.less());

    if (environment === 'live') {
        content.pipe(g.minifyCss());
    }

    // I NEED RETURN A STRING
    return content;
}

gulp.task('build-html', function() {

  // I SHOULD GET THE CSS TEXT 
  var cssText = buildCSS(); 

  gulp.src(__dirname + '/src/template.html')
        // INSERT THE CSS IN A HTML FILE (REPLACE AS STRING)
        .pipe(g.replace('/*INJECT:CSS*/', cssText))
        .pipe(gulp.dest(__dirname + '/dist/'));

});

最佳答案 您无法从gulp流中的文件返回内容.这是不可能的,因为流是异步的,所以当你尝试从你的函数返回时,内容甚至都不可用.

您必须在流中侦听"data" event,然后在事件处理函数中执行您想要执行的任何操作:

gulp.task('build-html', function(cb) {

  buildCSS().on('data', function(file) {
    var cssText = file.contents.toString();
    gulp.src(__dirname + '/src/template.html')
      .pipe(g.replace('/*INJECT:CSS*/', cssText))
      .pipe(gulp.dest(__dirname + '/dist/'))
      .on('end', cb);
  });

});
点赞