我可以将gulp流转换为字符串吗?

时间:2017-01-07 16:35:09

标签: javascript node.js gulp

我想在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/'));

});

1 个答案:

答案 0 :(得分:1)

您不能{g}一个gulp流中文件的内容return。这是不可能的,因为流是异步的,所以当你从你的函数中尝试return时,内容甚至都不可用。

你必须在流中监听"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);
  });

});