Gulp: First Impressions
Grunt has long been my command line companion of choice. It has served me well. I have no complaints but I’ve read many obituaries so this week I sat down to test Gulp, its supposed successor. These are my first impressions.
My use case is very particular, see related articles:
Gulp is a build system that runs on Node like Grunt. While Grunt is an all-purpose task runner, Gulp is based around streaming — sending files through filters / pipes to do things like preprocessing, minification, and concatenation.
For a helpful guide see Mark Goodyear’s article: Getting started with gulp.
I found gulp easy to configure. It took me several hours to convert my entire Grunt build script. This included converting several of my own tasks to stream-based gulp plugins. (I need to brush-up on my understanding of Node streams.) Running a full build was noticeably faster than its Grunt predecessor, despite the likely poor optimisation and metaphorical duct tape.
In my case I’m not sure gulp reaches its full speed potential. I have a lot of bottlenecks: Sass can’t compile CSS without PNG / SVG for inline data URIs — images aren’t ready until compressed — some fallback images don’t exist until they’re generated from SVG sources — SVGs are first minimised.
I can definitely see a place for gulp but it won’t be taking over my Grunt set-up right now. My requirements just aren’t very big or demanding. I’d be replacing like for like.
Still, gulp gets my thumbs-up for whatever that’s worth. I’ll look at in again in the future if it doesn’t get usurped tomorrow (apparently Broccoli is the new hotness).