gulp:传递依赖任务返回流作为参数

时间:2015-05-20 21:53:50

标签: gulp

我尝试创建两个gulp任务,并且我希望第二个任务是获取第一个输出流并继续应用插件。

我可以将第一个任务的返回值传递给第二个任务吗?

以下不起作用:

// first task to be run
gulp.task('concat', function() {
  // returning a value to signal this is sync
  return
    gulp.src(['./src/js/*.js'])
      .pipe(concat('app.js'))
      .pipe(gulp.dest('./src'));
};

// second task to be run
// adding dependency
gulp.task('minify', ['concat'], function(stream) {
  // trying to get first task's return stream
  // and continue applying more plugins on it
  stream
    .pipe(uglify())
    .pipe(rename({suffix: '.min'}))
    .pipe(gulp.dest('./dest'));
};

gulp.task('default', ['minify']);

有没有办法做到这一点?

2 个答案:

答案 0 :(得分:1)

您无法将流传递给其他任务。 但您可以使用gulp-if模块跳过某些管道方法,具体取决于条件。

var shouldMinify = (0 <= process.argv.indexOf('--uglify'));

gulp.task('script', function() {
  return gulp.src(['./src/js/*.js'])
      .pipe(concat('app.js'))
      .pipe(gulpif(shouldMinify, uglify())
      .pipe(gulpif(shouldMinify, rename({suffix: '.min'}))
      .pipe(gulp.dest('./dest'));
});

执行这样的任务以缩小

gulp script --minify

答案 1 :(得分:0)

我正在寻找相同的解决方案,但最终只是链接功能。 这非常灵活。 如果有人有更好的解决方案而不使用其他软件包,请分享。

function concatenate() {
      return gulp
            .src(['./src/js/*.js'])
            .pipe(concat('app.js'));
}

function minify() {
      return this
            .pipe(uglify())
            .pipe(rename({suffix: '.min'}));
}

function output() {
      return this.pipe(gulp.dest('./src'));
}

gulp.task('concat', function() {
      return output.call(concatenate());
});

gulp.task('minify', function() {
      return output.call(minify.call(concatenate()));
});

gulp.task('default', ['minify']);