I'll admit the Grunt plugin ecosystem has some flaws in it, but they are mostly ironed out. It comes down as always to discipline of the developers; separation of concerns, SRP, DRY, and all that.
The biggest concern that Gulp generally raises is that of using Streams (in the Node use of the term) instead of temp files. We also went through this in the compiler wars of GCC. However there is nothing stopping Grunt from mandating an IO abstraction layer that after some dependency analysis decides to either write a stream to disk, or another stream ( stream.pipe(dest) )
With Gulp you're still doing Ant like builds. Write a task that does A, B, C Grunt is becoming the "convention over configuration" tool; however more work does need to be done to standadise project conventions as you still have to specify src and dest options in your Grunt config, which ideally you shouldn't need to do. At the moment too many JS devs have too big an ego and are not willing to admit they're reinventing the wheel (and a lot of JS devs who used to be Java devs got totally f*cked by Maven cause Maven is shit)
The biggest concern that Gulp generally raises is that of using Streams (in the Node use of the term) instead of temp files. We also went through this in the compiler wars of GCC. However there is nothing stopping Grunt from mandating an IO abstraction layer that after some dependency analysis decides to either write a stream to disk, or another stream ( stream.pipe(dest) )
With Gulp you're still doing Ant like builds. Write a task that does A, B, C Grunt is becoming the "convention over configuration" tool; however more work does need to be done to standadise project conventions as you still have to specify src and dest options in your Grunt config, which ideally you shouldn't need to do. At the moment too many JS devs have too big an ego and are not willing to admit they're reinventing the wheel (and a lot of JS devs who used to be Java devs got totally f*cked by Maven cause Maven is shit)