Быстрое исправление было бы переименовать main.js в app.js, поскольку он обрабатывает в алфавитном порядке.
Но если вы хотите сохранить main.js, попробуйте сначала нажать его в массив. Затем, если вы измените glob для расширения файла, чтобы посмотреть только подкаталоги src, тогда он пропустит main.js и продолжит добавлять ваши модули в массив
concat.main.src.push('src/main.js');
// get all module directories
grunt.file.expand("src/**").forEach(function (dir) {
// get the module name from the directory name
var dirName = dir.substr(dir.lastIndexOf('/') + 1);
// create a subtask for each module, find all src files
// and combine into a single js file per module
concat.main.src.push(dir + '/**/*.js');
});
console.log(concat.main.src);