我怎么能在里面做一个条件 吞 </跨度> 管道输出到不同的目的地。
g.task(‘sass’,function(){ return g.src(sources.sass).pipe(changed(output.css))。pipe(sass({ 风格:‘压缩’
的 没有任何新依赖项的解决方案: 强>
该 gulp.src 函数返回一个流,所以你可以使用它;) 看着那(这 gulp docs 。
gulp.src
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; });
我建议你使用这样的表达式:
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())
使用 吞掉,如果 插入:
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 %>')); });