10

I have an array of objects that looks like the following.

var bundles = [
  {
    src: 'js/my-component/*.js',
    bundleName: 'my-component.js'
  },
  {
    src: 'js/my-other-component/*.js',
    bundleName: 'my-other-component.js'
  }
]

I want the gulp task to process/concat every entry in the array, but it doesn't seem to work.

gulp.task('bundlejs', function(){
    return bundles.forEach(function(obj){
      return gulp.src(obj.src)
      .pipe(concat(obj.bundleName))
      .pipe(gulp.dest('js/_bundles'))
    });
});
0

2 Answers 2

13

You should probably be merging the streams and returning the result, so that the task will complete at the appropriate time:

var es = require('event-stream');

gulp.task('bundlejs', function () {
  return es.merge(bundles.map(function (obj) {
    return gulp.src(obj.src)
      .pipe(concat(obj.bundleName))
      .pipe(gulp.dest('js/_bundles'));
  }));
});
Sign up to request clarification or add additional context in comments.

2 Comments

Thanks Ben, I will try this.
I marked this as the answer as it highlighted a best practice for structuring the code I had submitted. The issue I had was typo as detailed below.
0

This solution does work, I had the wrong directory name. Doh.

https://github.com/adamayres/gulp-filelog helped me find the problem.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.