Welcome to django-bower’s documentation!¶
Easy way to use bower with your django project.
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.).
View all packages available through Bower’s registry.
Contents:
Installation¶
Install bower from npm:
npm install -g bower
And django-bower package:
pip install django-bower
Add django-bower to INSTALLED_APPS in your settings:
'djangobower',
Add staticfinder to STATICFILES_FINDERS:
'djangobower.finders.BowerFinder',
Specify path to components root (you need to use absolute path):
BOWER_COMPONENTS_ROOT = '/PROJECT_ROOT/components/'
If you need, you can manually set path to bower
BOWER_PATH = '/usr/bin/bower'
Example settings file with django-bower:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 | import os
PROJECT_ROOT = os.path.abspath(
os.path.join(os.path.dirname(__file__), ".."),
)
DEBUG = True
TEMPLATE_DEBUG = DEBUG
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.sqlite3',
'NAME': 'db',
'USER': '',
'PASSWORD': '',
'HOST': '',
'PORT': '',
}
}
STATIC_ROOT = os.path.join(PROJECT_ROOT, 'static')
STATIC_URL = '/static/'
BOWER_COMPONENTS_ROOT = os.path.join(PROJECT_ROOT, 'components')
STATICFILES_FINDERS = (
'django.contrib.staticfiles.finders.FileSystemFinder',
'django.contrib.staticfiles.finders.AppDirectoriesFinder',
'djangobower.finders.BowerFinder',
)
SECRET_KEY = 'g^i##va1ewa5d-rw-mevzvx2^udt63@!xu$-&di^19t)5rbm!5'
TEMPLATE_LOADERS = (
'django.template.loaders.filesystem.Loader',
'django.template.loaders.app_directories.Loader',
)
MIDDLEWARE_CLASSES = (
'django.middleware.common.CommonMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
)
ROOT_URLCONF = 'example.urls'
WSGI_APPLICATION = 'example.wsgi.application'
TEMPLATE_DIRS = (
os.path.join(PROJECT_ROOT, 'templates'),
)
INSTALLED_APPS = (
'django.contrib.staticfiles',
'djangobower',
)
BOWER_INSTALLED_APPS = (
'jquery',
'underscore',
)
|
Usage¶
Specifie BOWER_INSTALLED_APPS in settings, like:
BOWER_INSTALLED_APPS = (
'jquery#1.9',
'underscore',
)
Download bower packages with management command:
./manage.py bower install
Add scripts in template, like:
{% load static %}
<script type="text/javascript" src='{% static 'jquery/jquery.js' %}'></script>
In production you need to call bower install before collectstatic:
./manage.py bower install
./manage.py collectstatic
If you need to pass arguments to bower, like –allow-root, use:
./manage.py bower install -- --allow-root
You can use bower freeze to receive BOWER_INSTALLED_APPS with fixed current versions:
./manage.py bower freeze
You can call bower commands like info and update with:
./manage.py bower info backbone
./manage.py bower update
Running tests¶
For running tests you need to install django-bower in development mode with:
python setup.py develop
Install dev requirements:
pip install -r requirements_dev.txt
Now you can run tests with:
django-admin.py test --settings=djangobower.test_settings djangobower
You can change test project root with TEST_PROJECT_ROOT environment variable. By default it is /tmp.
You can show current tests status in travis ci.
Example project¶
For running example project you need to change dir to example.
Prepare project with:
./manage.py syncdb
./manage.py bower_install
And run project with:
./manage.py runserver