Skip to content

Add pipe condition#594

Closed
henrytao-me wants to merge 3 commits intogulpjs:masterfrom
henrytao-me:master
Closed

Add pipe condition#594
henrytao-me wants to merge 3 commits intogulpjs:masterfrom
henrytao-me:master

Conversation

@henrytao-me
Copy link
Copy Markdown

Let's say I have a less task and I want to add sourcemaps depending on environment.

This is the original less task with no environment support:

gulp.task('less', function() {
  gulp.src('./dev/src/**/*.less')
    .pipe(sourcemaps.init())
    .pipe(less())
    .pipe(sourcemaps.write())
    .pipe(gulp.dest('./.tmp'));
});

This is the common solution:

gulp.task('less', function() {
  var res = gulp.src('./dev/src/**/*.less');
  if (env.DEBUG === 'yes') {
    res = res.pipe(sourcemaps.init());
  }
  res = res.pipe(less());
  if (env.DEBUG === 'yes') {
    res = res.pipe(sourcemaps.write());
  }
  res = res.pipe(gulp.dest('./.tmp'));
});

This is my proposed solution, more elegant (I think):

gulp.task('less', function() {
  gulp.src('./dev/src/**/*.less')
    .pipe(env.DEBUG === 'yes' ? sourcemaps.init() : null)
    .pipe(less())
    .pipe(env.DEBUG === 'yes' ? sourcemaps.write() : null)
    .pipe(gulp.dest('./.tmp'));
});

Overall idea:

If you add pipe like this:

gulp.task('less', function() {
  gulp.src('./dev/src/**/*.less')
    .pipe(null)
    .pipe(less())
    .pipe(null)
    .pipe(gulp.dest('./.tmp'));
});

Then it will execute like this:

gulp.task('less', function() {
  gulp.src('./dev/src/**/*.less')
    .pipe(less())
    .pipe(gulp.dest('./.tmp'));
});

@yocontra
Copy link
Copy Markdown
Member

use gulp-if

@yocontra yocontra closed this Jul 19, 2014
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants