&gt;for example if I can write a plain script to handle my build process without integrating grunt or gulp I&#x27;m certainly going to do that.<p>I used to like gulp because it does give you something like that. It lets you write your custom build task with an arbitrary input-&gt;output transformation and gulp will just drive it.<p>That said, it&#x27;s quite... heavy... for what can be considered to be basically something that takes a list of tasks and their dependencies and runs them in the appropriate order. That&#x27;s essentially the functionality of async.auto() from caolan&#x2F;async, so for kicks I made my own build tool that wraps async.auto&#x27;s functionality into a similar task() function. It&#x27;s lightweight (only depends on caolan&#x2F;async) and serves me quite well in the hobby project I use it in.