How to specify file order with Grunt?

gruntjs, minimatch, node.js

Solution

Your problem is that `main.js` is matched by the first pattern so the second pattern is made redundant. This might seem like a hacky way of doing it but basically you have to exclude it from the first pattern before you include it in the second; like so:

    concat: {
        options: {
            separator: ';'
        },
        dist: {
            src: ['www/js/*.js', '!www/js/main.js', 'www/js/main.js','!**/*.{min,pack}.js','!<%= concat.dist.dest %>','!<%= uglify.dist %>'],
            dest: 'www/js/<%= pkg.name %>.js'
        }
    }

Note that when using minimatch pattern order is important.

Problem

I've just started using Grunt, and I'm trying to get the concat task to concat my files in a specific order. Here's what I've got: ``` module.exports = function(grunt) { grunt.initConfig({ pkg: grunt.file.readJSON('package.json'), concat: { options: { separator: ';' }, dist: { src: ['www/js/*.js','www/js/main.js','!**/*.{min,pack}.js','!<%= concat.dist.dest %>','!<%= uglify.dist %>'], dest: 'www/js/<%= pkg.name %>.js' } }, ``` I was hoping that by putting `www/js/main.js` second, it would move the file down to the bottom of the list, but that doesn't appear to be the case. How can I impose some order on the list of files it matches?

Original source