bower
It's still very popular among front-end developers, even though it has very few features. Every front-end package is using it. There is also an initiative to merge bower into npm.
Bower is optimized for the client-side and supports only flat dependency trees, i.e. each library must be used only once (since it's expensive to ship different versions of the same library to the client), and the dependency constraints must be resolved by the user.
You can expect to find anything that is front-end related in the bower registry (bower search <some keyword>
) -- in my opinion, that's the biggest advantage of bower in relation to other package managers.
volo
I have still not used it for more than 5 minutes in years. Don't know about it, but from what I can see it does include some build tool, which is very familiar to Grunt users.
npm
Yes, npm stands for Node Package Manager. But nowadays you can use it for everything; people are no longer only npm install
ing things and expecting them to work only in the Node environment. For example, there are many npm packages for Twitter Bootstrap.
Npm is optimized for server-side usage, with a nested dependency tree. Each dependency can have its own dependencies which can have their own, and so on. This eliminated dependency version conflicts as each dependency can use their own version of e.g. Underscore. However, the upcoming npm version 3 will flatten the dependency tree:
With npm@3, your node_modules directory will be a lot flatter. All of your dependencies and most of your subdependencies (and (sub)+dependencies) will be sitting next to each other at the top level. Only when there are conflicts will modules be installed at deeper levels. This should make things a lot easier for Windows users.
Some advantages I see on using npm:
- It's used by all the other package managers (component, bower, volo, JSPM, etc);
- Allows using build scripts;
- Lots of tools are available for introspecting npm-based packages
npm is the package manager for JavaScript.

As of february of 2013, my opinion was the following. Please don't take it into account anymore.
npm
It's better to stick with it when you are with a Node project, there are very few projects that are available to browsers also...
bower
Bower is the pop guy right now. They have lots of projects under their hood, and the project maintainers like to keep them up-to-date in the bower registry...
It's a shame that he's sometimes a little buggy.
volo
I haven't tried volo for more than 5 minutes since so, but from what I could see it looks to be more flexible than bower.
A negative point for volo is that their projects are very outdated.