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):
You'll need two streams:
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