Sto usando Gulp per raccogliere front-matter (tramite il plugin gulp-front-matter) e poi, dopo averlo aggregato, lo sto salvando in un altro file. Tra gli altri dati, sto risparmiando un sacco di CSS. Ecco quello che ho per il mio compileCSS
compito:Come si esegue un'attività "fine alla fine" ma solo alla fine dell'attività corrente?
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);
})
;
L'attività funziona come previsto (nota, è una versione semplificata). Tutto funziona come previsto e ottengo un file compiled.css
con tutti i CSS della parte anteriore. Tuttavia, ho trovato la necessità di usare il prefisso non solo sul mio normale file css ma anche su questo nuovo compilato.css. Così ho creato un compito prefix
:
gulp.task('prefix', ['compileCSS', 'copy'], function() {
gulp.src('./build/assets/css/*.css')
.pipe(autoprefixer({ browsers: ['last 3 versions'] }))
.pipe(gulp.dest('build'))
;
});
Ora, il problema è che la funzione on('end'
eseguito alla fine di tutti i compiti, non solo il compito compileCSS
.
La mia domanda è, c'è un modo per iniettare un'attività tipo "alla fine" per ogni attività? O c'è un modo per usare gli stream in qualche modo (dato che l'ultimo task non è un flusso reale e non ne approfitta, non vedo come).
Non è solo che vengono eseguiti contemporaneamente perché non è stata fornita una richiamata? https://github.com/gulpjs/gulp/blob/master/docs/recipes/running-tasks-in-series.md – RichieAHB