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