2017-01-07 8 views
4

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

することはできません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); 
    }); 

}); 
関連する問題