gulp-order

    1.2.0 • Public • Published

    gulp-order

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

    Motivation

    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.

    Usage

    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");
     
    gulp
      .src("**/*.coffee")
      .pipe(coffee())
      .pipe(gulp.src("**/*.js")) // gulp.src passes through input
      .pipe(order([
        "vendor/js1.js",
        "vendor/**/*.js",
        "app/coffee1.js",
        "app/**/*.js"
      ]))
      .pipe(concat("all.js"))
      .pipe(gulp.dest("dist"));
     
      // When passing gulp.src stream directly to order, don't include path source/scripts in the order paths.
      // They should be relative to the /**/*.js.
      gulp
      .src("source/scripts/**/*.js")
      .pipe(order([
        "vendor/js1.js",
        "vendor/**/*.js",
        "app/coffee1.js",
        "app/**/*.js"
      ]))
      .pipe(concat("all.js"))
      .pipe(gulp.dest("dist"));

    Options

    gulp
      .src("**/*.coffee")
      // ...
      .pipe(order([...], options))

    base

    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.

    Features

    Uses minimatch for matching.

    Tips

    • Try to move your ordering out of your gulp.src(...) calls into order(...) instead.
    • You can see the order of the outputted files with gulp-print

    Troubleshooting

    If your files aren't being ordered in the manner that you expect, try adding the base option.

    Alternative Approaches

    Contributors

    License

    MIT - Copyright © 2014 Marcel Jackwerth

    Install

    npm i gulp-order

    DownloadsWeekly Downloads

    21,751

    Version

    1.2.0

    License

    MIT

    Unpacked Size

    8.68 kB

    Total Files

    9

    Last publish

    Collaborators

    • demurgos
    • rejas
    • sirlantis