如何在Django应用程序中使用Bower包管理器?

18
我刚接触Django框架,了解到“静态”文件(如css和js)必须在“静态”目录中,但我的问题是:
考虑到Bower包管理器将其依赖项安装在名为bower_components的新目录中,那么bower.json必须在“静态”Django目录中创建吗?如果是这样,collectstatic命令不会导出bower.json吗?(可能会有一些不想要的情况)
使用Bower和Django框架的推荐方法是什么?
更新:
感谢Yuji 'Tomita' Tomita,您的答案可以提供更多的视角。我只想使用Bower来管理前端依赖项,如jQuery,bootstrap等,按照逻辑,它们应该在static / django目录中,但这样做可能会导致bower.json被视为静态资源,这可能不是我们想要的。
5个回答

8
我会尽力为您翻译。这是需要翻译的内容:

我按照this博客文章设置了我的Django Bower项目:

项目结构:

|-root
  |-app
     |-assets
     |-static
     |-templates
     |settings.py
     |urls.py
     |views.py
     |wsgi.py
  |manage.py
  |bower.json
  |.bowerrc

我的.bowerrc文件:

{
    "directory": "app/static/bower_components"
}

我会像这样使用Bower组件:

And I user bower components like this:

<script src="{{ STATIC_URL }}bower_components/angular/angular.js"></script>

我的 settings.py 文件:
STATIC_URL = '/static/'
STATIC_ROOT = join(BASE_DIR, 'assets')
STATICFILES_DIRS = [join(BASE_DIR, 'static')]

还有 urls.py

urlpatterns += patterns('',
                        (r'^static/(?P<path>.*)$', 'django.views.static.serve',
                         {'document_root': settings.STATIC_ROOT}),)

@juho 对于使用django-bower的正确方式有所了解。你对{{ STATIC_URL }}的使用以及缺乏BOWER_INSTALLED_APPS几乎完全背离了使用django-bower的初衷。 - Arctelix
2
@arctelix:好在这个答案没有使用django-bower。 - jazzpi
@jazzpi 是的,我之前的评论完全是过早的。我看到标题是“我的Django Bower项目”,就以为他们指的是“django-bower”包。当时,我没有意识到他们只是简单地指Django + bower... 呃。 - Arctelix

4

像django-bower这样的应用程序不需要,或者其他占用服务器资源、缓慢构建时间,并且极大地限制了bower的实用性的专业工具。特别是在您拥有自己的bower依赖项的嵌套django应用程序中。

您可以查看我的教程,了解如何无缝集成Django + Bower + Heroku虽然该教程针对Heroku,但该方法适用于任何部署方案。


2
你应该在settings.py中使用BOWER_INSTALLED_APPS键列出已安装的bower软件包。
现在,在开发服务器上,使用{% static %} 模板标签可以从它们的安装目录中找到它们。在生产服务器上,collectstatic将从安装目录(bower_components)收集正确的静态文件。
更多信息请参见:http://django-bower.readthedocs.org/en/latest/usage.html

2

没有推荐的方法 - 这取决于您的项目。如果您正在使用bower、node等技术而不仅仅是django项目,那么将其放在项目根目录(django上方)可能有意义,以便可以在其他地方重复使用。

如果纯粹是为了django的静态文件,那么将其放在 src/ 目录之外可能更合适,这个目录不属于 staticfiles 系统,而是构建到静态目录中,然后通过collectstatic导出。


2

如果您担心 bower.json 会被包含在内,collectstatic 命令有一个 --ignore 选项,您可以使用它来排除任何您想要排除的文件。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接