让django-pipeline和bower一起玩得很好

mir*_*h23 5 django bower django-pipeline collectstatic

external/bower_components/正在我的项目根目录下安装bower组件.我有一些额外的静态文件static以及一些已安装的应用程序.我正在尝试使用django-pipeline来缩小所有生存的静态文件,bower_components而我只留下其他静态文件.

我的问题是我无法弄清楚如何使用django-pipeline缩小我的bower组件,同时不将所有bower包复制到目标目录.

settings.py:

STATIC_ROOT = 'staticfiles'
STATIC_URL = '/static/'

STATICFILES_DIRS = (
    os.path.join(BASE_DIR, 'static'),
    os.path.join(os.path.dirname(__file__), '..', 'external'),
)

STATICFILES_STORAGE = 'pipeline.storage.PipelineStorage'

PIPELINE = True

STATICFILES_FINDERS = (
    'django.contrib.staticfiles.finders.FileSystemFinder',
    'django.contrib.staticfiles.finders.AppDirectoriesFinder',
    'pipeline.finders.PipelineFinder',
)
Run Code Online (Sandbox Code Playgroud)

当我跑步的时候python manage.py collectstatic,我最终得到了我想要的staticfiles东西(静态基础中的东西以及从凉亭中拉出来的东西的缩小版本),加上凉亭中每个包装的完整来源.这是从最终用户的角度来看,但是在那里我实际上并不需要很多过多的垃圾.

为了解决这个问题,我试过了python manage.py collectstatic -i bower_components.但在这种情况下,忽略不仅导致collectstatic不复制文件,而且还导致django-pipeline无法看到文件,并且最终

如果我尝试使用一些自定义管道查找器,pipeline.finders.FileSystemFinder它会导致collectstatic忽略我想要的所有静态脚本和CSS django.contrib.admin以及我的static/文件夹.

有没有办法我可以吃蛋糕并吃掉它,以便我可以获得collectstatic复制功能来关注一组,而django-pipeline的组合/缩小注意到另一组?

写完这篇文章之后,我意识到答案可能是明确地收集和缩小我安装的应用程序中的所有脚本和css PIPELINE_CSS,PIPELINE_JS但这似乎并不理想,因为每次集成新应用程序时都会产生不寻常的开销.

mat*_*ons 1

是的,但是您需要修改静态查找器以将静态查找器更改为使用 django-pipeline 查找器:

STATICFILES_FINDERS = (
    'pipeline.finders.FileSystemFinder',
    'pipeline.finders.AppDirectoriesFinder',
    'pipeline.finders.CachedFileFinder',
    'pipeline.finders.PipelineFinder'
)
Run Code Online (Sandbox Code Playgroud)

这应该只复制相关文件。