SEQUE o seu Gruntfile

Até recentemente, eu carregava tarefas do Grunt uma por linha – como sugerido pela documentação . Mas logo acabei com uma lista de tarefas desagradável.

grunt.loadNpmTasks('grunt-contrib-jshint');
grunt
.loadNpmTasks('grunt-contrib-watch');
grunt
.loadNpmTasks('grunt-contrib-requirejs');
grunt
.loadNpmTasks('grunt-contrib-connect');
grunt
.loadNpmTasks('grunt-contrib-concat');
grunt
.loadNpmTasks('grunt-contrib-uglify');
grunt
.loadNpmTasks('grunt-contrib-less');

No entanto, recentemente me deparei com algumas abordagens alternativas para isso. O primeiro que encontrei enquanto navegava pelo Ghost no Github. Eles usam um pacote npm chamado matchdep que permite filtrar dependências em seu package.json

npm install matchdep

Em seguida, em seu Gruntfile, filtre suas devDependencies usando ..

require('matchdep').filterDev('grunt-*').forEach(grunt.loadNpmTasks);

ou suas dependências regulares usando

require('matchdep').filter('grunt-*').forEach(grunt.loadNpmTasks);

Como alternativa, me deparei com outro pacote chamado load-grunt-tasks enquanto brincava com o Yeoman.

npm install load-grunt-tasks

e então em seu Gruntfile

require('load-grunt-tasks')(grunt);