我正在使用Gulp來收集前臺內容(通過gulp-front-matter插件),然後在彙總它之後,我將它保存到另一個文件中。在其他數據中,我保存了一堆CSS。下面是我對我的compileCSS
任務:你是如何運行吞吐「結束」任務,但只在當前任務結束?
var collected = [];
gulp.src('./client/**/*.html')
.pipe(frontMatter({ property: 'meta', remove: true }))
.pipe(through.obj(function(file, enc, callback) {
var css = file.meta;
collected.push(css);
}))
.pipe(gulp.dest('./build/templates'))
.on('end', function() {
var cssPath = ['build', 'assets', 'css', 'compiled.css'];
fs.writeFileSync(cssPath.join(path.sep), cssPath);
})
;
該任務按預期工作(注意,這是一個簡化版本)。一切都按預期工作,我得到一個compiled.css
文件與所有的前端CSS。但是,我發現不僅需要在我的常規css文件中使用Prefixer,而且還需要在這個新的compiled.css中使用Prefixer。所以,我創建了一個prefix
任務:現在
gulp.task('prefix', ['compileCSS', 'copy'], function() {
gulp.src('./build/assets/css/*.css')
.pipe(autoprefixer({ browsers: ['last 3 versions'] }))
.pipe(gulp.dest('build'))
;
});
,問題是,on('end'
功能在所有的任務,不只是compileCSS
任務結束運行。
我的問題是,有沒有辦法爲每個任務注入一個「結束」類型的任務?或者有沒有辦法以某種方式使用流(因爲最後一個任務不是實際的流並且沒有利用它,我不知道如何)。
這不僅僅是因爲你沒有提供回調而同時運行嗎? https://github.com/gulpjs/gulp/blob/master/docs/recipes/running-tasks-in-series.md – RichieAHB 2014-09-29 13:24:50