This recipe allows downloading and installing assets such as images, CSS and JavaScript using Twitter Bower.

Supported options

The recipe supports the following options:


Packages that should be installed with bower. Packages specified here are passed to bower verbatim. They can be specified in any form that is supported by bower:

packages =
Absolute path to the bower "project" directory. bower install is run from this directory and the bower configuration file, .bowerrc is placed in this directory. Optional; defaults to ${buildout:parts-directory}/bower. Requires an absolute path.
Absolute path to the bower executable. Packages are installed using this executable. Optional; defaults to bower on PATH.
Relative path, from the base-directory, to the directory where bower will download packages to. This path is written to the .bowerrc file prior to running the executable. Optional; defaults to downloads. Thus, the downloaded packages are placed in ${base-directory}/downloads by default.

Example usage

A sample buildout that uses this recipe could look like:

parts = node web

recipe = gp.recipe.node
url = http://nodejs.org/dist/v0.8.16/node-v0.8.16.tar.gz
npms = bower@0.6.8
scripts = bower

recipe = bowerrecipe
packages = jquery#1.8.3 normalize-css
executable = ${buildout:bin-directory}/bower

This would place the downloaded packages in parts/bower/downloads. Modifying the web section to be:

recipe = bowerrecipe
packages = jquery#1.8.3 normalize-css
executable = ${buildout:bin-directory}/bower
base-directory = ${buildout:parts-directory}
downloads = components

would result in bower placing the downloaded packages in parts/components.


  1. Bower still looks at the ~/.bowerrc file. Hence, if this file exists, it may affect the buildout bower configuration
  2. Bower still uses the cache located in the user's home directory. For me, this happens to be ~/.bower/cache/