A few seconds.


The gulp plugin `gulp-order` allows you to reorder a stream of files using the same syntax as of `gulp.src`.


The gulp plugin gulp-order allows you to reorder a stream of files using the same syntax as of gulp.src.


Assume you want to concatenate the following files in the given order (with gulp-concat):

  • vendor/js1.js
  • vendor/**/*.{coffee,js}
  • app/coffee1.coffee
  • app/**/*.{coffee,js}

You'll need two streams:

  • A stream that emits the JavaScript files, and
  • a stream that emits the compiled CoffeeScript files.

To combine the streams you can pipe into another gulp.src or use es.merge (from event-stream). But you'll notice that in both cases the files are emitted in the same order as they come in - and this can seem very random. With gulp-order you can reorder the files.


require("gulp-order") returns a function that takes an array of patterns (as gulp.src would take).

var order = require("gulp-order");
var coffee = require("gulp-coffee");
var concat = require("gulp-concat");

  .pipe(gulp.src("**/*.js")) // gulp.src passes through input


  // ...
  .pipe(order([...], options))


Some plugins might provide a wrong base on the Vinyl file objects. base allows you to set a base directory (for example: your application root directory) for all files.


Uses minimatch for matching.


  • Try to move your ordering out of your gulp.src(...) calls into order(...) instead.

Alternative Approaches



MIT - Copyright © 2014 Marcel Jackwerth

Pincer is a project which aims to provide best library discovery tools for developers. We're growing day by day. We have only npm platform for now but we will add the others as much as we can.