gulp: passing dependent task return stream as parameter

感情迁移 提交于 2019-12-10 18:45:53

问题


I'm trying to create two gulp tasks, and I'd like the second task to take the first one's output stream and keep applying plugins to it.

Can I pass the first task's return value to the second task?

The following doesn't work:

// 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']);

Is there any way to do this?


回答1:


you can't pass stream to other task. but you can use gulp-if module to skip some piped method depending on conditions.

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

execute task like this to minify

gulp script --minify



回答2:


I am looking for the same solution, but ended up just chaining functions. This is quite flexible. Please share if anyone has better solution without using additional packages.

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']);


来源:https://stackoverflow.com/questions/30361051/gulp-passing-dependent-task-return-stream-as-parameter

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!