Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to run two grunt watch tasks simultaneously

Is it possible to run two watch tasks simultaneously?

I understand that I can have any number of tasks I want inside watch settings and just launch grunt watch and it will watch all of them, like this

... watch: {     A: {         files: "js/dev/**/*.coffee",         tasks: ["coffee", "requirejs"]     },     B: {         files: "js/dev/**/*.coffee",         tasks: ["coffee"]     },     C: {         files: "js/dev/**/*.html",         tasks: ["copy"]     } } ... 

...but I don't need this. I just want to have different set of tasks for development and production. As you can guess, the only difference between A (production) and B (development) is minification and concatenation. I don't need to launch A and B tasks at the same time.

First I came with this idea

grunt.registerTask("prod", ["watch:A", "watch:C"]); grunt.registerTask("dev", ["watch:B", "watch:C"]); 

But this didn't work. Just first watch tasks is working (C never works). Is that possible to do what I want?

like image 726
Vitalii Korsakov Avatar asked Jul 11 '13 05:07

Vitalii Korsakov


1 Answers

I've found using grunt-concurrent works:

concurrent: {   options: {     logConcurrentOutput: true   },   prod: {     tasks: ["watch:A", "watch:C"]   },   dev: {     tasks: ["watch:B", "watch:C"]   } } 

Then:

grunt.registerTask("prod", ["concurrent:prod"]); grunt.registerTask("dev", ["concurrent:dev"]); 
like image 118
Nicolas Hery Avatar answered Sep 20 '22 20:09

Nicolas Hery