Bower is just a package manager.
The important thing to note here is that Bower is just a package manager, and nothing else. It doesn’t offer the ability to concatenate or minify code, it doesn’t support a module system like AMD: it’s sole purpose is to manage packages.
The bower registry will just be a regular webapp with a simple REST api for name/url.
What is Bower?
Why should I care?
- Saves time : The first reason why should learn about bower is that it will save the time you spend finding client side dependencies. Each time I have to install jQuery I go to the jQuery website and either download the package or use the CDN version. With bower, you can just type a command and you will get jquery installed on your local machine. You don’t have to remember version numbers etc. You can look up any library information using bower info command.
- Helps you work offline : Bower creates a .bower folder in the users home directory where it downloads all the assets and keeps them available for offline usage when you install a package. If you are familiar with Java, Bower is similar to the *.m2* repository for the popular Maven build system. Each time you download any repository it will install that library in two folders — one in your application folder and another in the .bower directory under the user’s home directory. Given this, the next time you need this repository it will pick up that version from the user’s home .bower directory.
- Makes it easy to express client side dependencies : You can create a file called bower.json where you can specify all your client side dependencies. Anytime you need to figure out what all libraries you are using you can refer to this file.
- Makes update easy : Suppose a new version of a library is released with an important security fix, in order to install the new version you just have to run a command and bower will update all of your dependencies with the new version.
A good one explaining bower’s relationship with NPM and version management in NPM, also the possibility of replaceing it with NPM