pipe道内部的吞咽条件

我怎样才能做一个条件吞咽pipe输出到不同的目的地。

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 %>')); }); 

使用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 %>')); }); 

解决scheme没有任何新的依赖关系:

gulp.src函数返回一个stream,所以你可以使用它;)
看一下大嘴文件 。

 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 .pipe(someModule()) .pipe(someModule2()); } else { stream .pipe(someModule3()) .pipe(someModule4()); } stream.pipe(notify('scss converted to css and compressed')); return stream; }); 

我build议你使用这样的expression式:

 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 %>')); }); 

如果你不想添加任何额外的依赖,你可以信任好的老猫王(?:)

 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 %>')); }); 

或者对于多种情况:

 .pipe(condition1 ? g.dest(output.css) : gulp.util.noop()) .pipe(condition2 ? g.dest(output2.css) : gulp.util.noop()) 
Interesting Posts