node.js - node - Condición de trago dentro de la tubería
node-sass (4)
Si no desea agregar ninguna dependencia adicional, puede confiar en el viejo Elvis (? :) :
g.task(''sass'', function() {
return g.src(sources.sass)
.pipe(changed(output.css))
.pipe(sass({style:''compressed'', sourcemap:true}))
// Conditional output
.pipe(condition ? g.dest(output.css) : g.dest(output.css2))
.pipe(notify(''scss converted to css and compressed <%= file.relative %>''));
});
O para casos múltiples:
.pipe(condition1 ? g.dest(output.css) : gulp.util.noop())
.pipe(condition2 ? g.dest(output2.css) : gulp.util.noop())
¿Cómo puedo hacer una condición dentro de Gulp pipe para enviar a un destino diferente?
g.task(''sass'', function() {
return g.src(sources.sass).pipe(changed(output.css)).pipe(sass({
style: ''compressed'',
sourcemap: true
})).pipe(function() {
if (..) {
g.dest(output.css);
} else {
g.dest(output.css2);
}
}).pipe(notify(''scss converted to css and
compressed
<%=f ile.relative %>''));
});
Te sugiero que utilices la expresión algo como esto:
g.task(''sass'', function(){
var destinationFileName;
if (...) {
destinationFileName = ''output.css'';
} else {
destinationFileName = ''output2.css'';
}
return g.src(sources.sass)
.pipe(changed(output.css))
.pipe(sass({style:''compressed'', sourcemap:true}))
.pipe(g.dest(destinationFileName))
.pipe(notify(''scss converted to css and compressed <%= file.relative %>''));
});
Utilice el complemento gulp-if :
var gulpif = require(''gulp-if'');
g.task(''sass'', function() {
return g.src(sources.sass)
.pipe(changed(output.css))
.pipe(sass({style:''compressed'', sourcemap:true}))
// Conditional output
.pipe(gulpif(condition1, g.dest(output.css)))
.pipe(gulpif(condition2, g.dest(output.css2)))
.pipe(notify(''scss converted to css and compressed <%= file.relative %>''));
});
La solución sin nuevas dependencias:
La función gulp.src
devuelve una secuencia, por lo que puede usarla;)
Mira los documentos de la bebida .
gulp.task(''task'', function () {
let stream = gulp.src(sources.sass)
.pipe(changed(output.css)).pipe(sass({
style: ''compressed'',
sourcemap: true
}));
if (2 + 2 === 4) {
stream = stream
.pipe(someModule())
.pipe(someModule2());
}
else {
stream = stream
.pipe(someModule3())
.pipe(someModule4());
}
stream = stream.pipe(notify(''scss converted to css and compressed''));
return stream;
});