Friday 14 April 2017

Gulp promises and streams

I have two gulp tasks that implement node promises to receive some destination data. I am am trying to run them before running the parrent task. I have tried both streams and callback with no joy.

I suppose I could use another promises but the gulp doc recommend streams

Coffee

gulp.task 'coffee', ->
  stream = getDest(argv.lang, 'js').then (response) ->
    gulp.src([coffeeSrc],{ base: 'assets' })
    .pipe(logger(
      before: 'Compiling CoffeeScript files ...'
      after: 'CoffeeScript files compiled successfully'
      showChange: silent))
    .pipe(coffee({bare: true}))
    .on('error', gutil.log)
    .on('error', gutil.beep)
    .pipe(uglify())
    .pipe(concat('app.min.js'))
    .pipe(multistream.apply(undefined, response))
  .catch (error) ->
    console.error 'failed', error
  return stream

Vendor

gulp.task 'vendor', ->
  stream = getDest(argv.lang, 'js').then (response) ->
    gulp.src(["./assets/jsv2/vendor/jquery.min.js",vendorSrc])
    .pipe(logger(
      before: 'Compiling vendor javascript files ...'
      after: 'Vendor javascript files compiled successfully'
      showChange: silent))
    .pipe(uglify())
    .pipe(concat('vendor.min.js'))
    .pipe(multistream.apply(undefined, response))
  .catch (error) ->
    console.error 'failed', error
  return stream

Parrent

gulp.task 'allJs', ['coffee', 'vendor'], ->
  stream = getDest(argv.lang, 'js').then (response) ->
    gulp.src(["./assets/jsv2/vendor/jquery.min.js",
      jsOutputDir + 'vendor.min.js',
      jsOutputDir + 'app.min.js'],{ base: 'assets' })
        .pipe(logger(
          before: 'Bundling javascript files ...'
          after: 'Bundled javascript files compiled successfully'
          showChange: silent))
        .pipe(uglify())
        .pipe(concat('all.min.js'))
        .pipe(multistream.apply(undefined, response))
  .catch (error) ->
    console.error 'failed', error
  return stream

If anyone has any advice would be great thank you :D



via Alex Kirwan

No comments:

Post a Comment