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