管道内的吞咽状况

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了管道内的吞咽状况相关的知识,希望对你有一定的参考价值。

如何在Gulp管道中执行输出到不同目的地的条件。

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 %>'));
});
另一答案

没有任何新依赖项的解决方案:

gulp.src函数返回一个流,所以你可以使用它;) 看看gulp docs

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())

以上是关于管道内的吞咽状况的主要内容,如果未能解决你的问题,请参考以下文章

如何通过单击片段内的线性布局从片段类开始新活动?下面是我的代码,但这不起作用

如何从片段内的列表视图打开链接网址?

[Go] 通过 17 个简短代码片段,切底弄懂 channel 基础

使用从循环内的代码片段中提取的函数避免代码冗余/计算开销

如何在 Kotlin 片段内的按钮之间切换片段?

Android:片段内的按钮操作