Skip to content
Stanislav Gurin edited this page Mar 22, 2017 · 1 revision

Why NPM over Bower?

Npm is most commonly used for managing Node.js modules, but it works for the front-end too when combined with Browserify and/or $ npm dedupe.

Bower is created solely for the front-end and is optimized with that in mind. The biggest difference is that npm does nested dependency tree (size heavy) while Bower requires a flat dependency tree (puts the burden of dependency resolution on the user).

A nested dependency tree means that your dependencies can have their own dependencies which can have their own, and so on. This is really great on the server where you don't have to care much about space and latency. It lets you not have to care about dependency conflicts as all your dependencies use e.g. their own version of Underscore. This obviously doesn't work that well on the front-end. Imagine a site having to download three copies of jQuery.

Why Gulp over Grunt?

Gulp is an expressive, streaming build system which brings a terse, easy to use configuration setup we feel benefits those using front-end build tooling. We enjoy using it for speed and task composability. Although Grunt is a fantastic tool with a rich ecosystem of existing plugins, it comes with a level of (what some deem) over-configuration when it comes to simple tasks. The team working on Web Starter Kit continue to use and love both tools, but felt Gulp would be a better fit for the needs of our users in this particular case.

Clone this wiki locally