我可以转换成一个string的gulpstream吗?

我想在gulpstream中应用一些任务并获取输出string。 我不想创build一个新的文件。

这是我的代码:

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/')); }); 

您不能从gulpstream中的文件return内容。 这是不可能的,因为stream是asynchronous的,所以当你尝试从你的函数return时,内容甚至不可用。

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

 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); }); });