5

我正在将凉亭组件安装到external/bower_components/我的项目根目录下。我有额外的静态文件static以及一些已安装应用程序的一部分。我正在尝试使用 django-pipeline 来缩小所有存在的静态文件,bower_components而我不理会其他静态文件。

我的问题是我不知道如何使用 django-pipeline 来缩小我的凉亭组件,同时又不将所有凉亭包复制到目标目录。

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',
)

当我运行时python manage.py collectstatic,我最终得到了我想要的所有staticfiles东西(静态基础中的东西以及从凉亭中拉入的东西的缩小版本),以及凉亭中每个包的完整来源。从最终用户的角度来看,这是可行的,但是我实际上并不想要很多多余的垃圾。

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

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

有没有一种方法可以让我吃蛋糕并吃掉它,这样我就可以获得collectstatic复制功能来关注一个组,而 django-pipeline 的组合/缩小关注另一个组?

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

4

1 回答 1

1

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

STATICFILES_FINDERS = (
    'pipeline.finders.FileSystemFinder',
    'pipeline.finders.AppDirectoriesFinder',
    'pipeline.finders.CachedFileFinder',
    'pipeline.finders.PipelineFinder'
)

这应该只复制那里的相关文件。

于 2015-05-04T09:42:28.810 回答