README.md

Bower

Bower is a package manager for the web. It offers a generic, unopinionated
solution to the problem of front-end package management, while exposing the
package dependency model via an API that can be consumed by a more opinionated
build stack. There are no system wide dependencies, no dependencies are shared
between different apps, and the dependency tree is flat.

Bower runs over Git, and is package-agnostic. A packaged component can be made
up of any type of asset, and use any type of transport (e.g., AMD, CommonJS,
etc.).

A private Git repository, e.g., https://github.com/someone/some-package.git. If the protocol is https, a prompt will ask for the credentials. ssh can also be used, e.g., git@github.com:someone/some-package.git and can authenticate with the user's ssh public/private keys. ‡

A URL to a file, including zip and tar files. Its contents will be
extracted.

‡ These types of <package> might have versions available. You can specify a
semver compatible version to fetch a specific release, and lock the
package to that version. You can also use ranges to specify a range of versions.
If you are using a package that is a git endpoint, you may use any tag, commit SHA,
or branch name as a version. For example: <package>#<sha>. Using branches is not
recommended because the HEAD does not reference a fixed commit SHA.

All package contents are installed in the bower_components directory by default.
You should never directly modify the contents of this directory.

Using bower list will show all the packages that are installed locally.

Custom install directory

A custom install location can be set in a .bowerrc file using the directory property. The .bowerrc file should be a sibling of your project's bower.json.

{
"directory": "public/bower_components"
}

Finding packages

To search for packages registered with Bower:

bower search [<name>]

Using just bower search will list all packages in the registry.

Using packages

The easiest approach is to use Bower statically, just reference the package's
installed components manually using a script tag:

<scriptsrc="/bower_components/jquery/jquery.js"></script>

For more complex projects, you'll probably want to concatenate your scripts or
use a module loader. Bower is just a package manager, but there are plenty of
other tools -- such as Sprockets
and RequireJS -- that will help you do this.

Uninstalling packages

To uninstall a locally installed package:

bower uninstall <package-name>

Warning

On prezto or oh-my-zsh, do not forget to alias bower='noglob bower' or bower install jquery\#1.9.1

Running commands with sudo

Bower is a user command, there is no need to execute it with superuser permissions.
However, if you still want to run commands with sudo, use --allow-root option.

A note for Windows users

To use Bower on Windows, you must install
msysgit correctly. Be sure to check the
option shown below:

Note that if you use TortoiseGit and if Bower keeps asking for your SSH
password, you should add the following environment variable: GIT_SSH - C:\Program Files\TortoiseGit\bin\TortoisePlink.exe. Adjust the TortoisePlink
path if needed.

Using bower's cache

Bower supports installing packages from its local cache (without internet connection), if the packages were installed before.

bower install <package-name> --offline

The content of the cache can be listed with:

bower cache list

The cache can be cleaned with:

bower cache clean

Configuration

Defining a package

You must create a bower.json in your project's root, and specify all of its
dependencies. This is similar to Node's package.json, or Ruby's Gemfile,
and is useful for locking down a project's dependencies.

NOTE: In versions of Bower before 0.9.0 the package metadata file was called
component.json rather than bower.json. This has changed to avoid a name
clash with another tool. You can still use component.json for now but it is
deprecated and the automatic fallback is likely to be removed in an upcoming
release.

Registering packages

Your package must be available at a Git endpoint (e.g., GitHub); remember
to push your Git tags!

Then use the following command:

bower register <my-package-name> <git-endpoint>

The Bower registry does not have authentication or user management at this point
in time. It's on a first come, first served basis. Think of it like a URL
shortener. Now anyone can run bower install <my-package-name>, and get your
library installed.

For a better of idea how this works, you may want to check out our bin
file.

When using bower programmatically, prompting is disabled by default. Though you can enable it when calling commands with interactive: true in the config.
This requires you to listen for the prompt event and handle the prompting yourself. The easiest way is to use the inquirer npm module like so: