我在SITE_ROOT/sources/css
中有很多CSS文件,我想使用django-pipeline仅压缩SITE_ROOT/static/css
中的一个文件。
STATIC_ROOT = os.path.join(SITE_ROOT, 'static')
STATICFILES_DIRS = (
os.path.join(SITE_ROOT, 'sources'),
)
PIPELINE_CSS = {
'responsive': {
'source_filenames': (
'css/smartphones.css',
'css/tablets.css',
),
'output_filename': 'css/responsive.min.css',
}
}
运行collectstatic
后,我在static/
文件夹中看到了缩小文件(responsive.min.css),但是还有sources/
文件夹中所有文件的副本和django管理员静态文件的副本。
如何只获取STATIC_ROOT文件夹中的缩小文件?
答案 0 :(得分:2)
您可以创建自己的STATICFILES_STORAGE
类,继承自PipelineStorage
,扩展behavior of PipelineMixin
。像这样的东西(需要测试):
import shutil
import os.path
from django.conf import settings
from pipeline.storage import PipelineStorage
class PipelineCleanerStorage(PipelineStorage):
def post_process(self, paths, dry_run=False, **options):
# Do the usual stuff (compress and deliver)
res = PipelineStorage.post_process(self, paths, dry_run=False, **options)
# Clean sources files there
shutil.rmtree(os.path.join(settings.BASE_DIR, "static/sources"))
yield res
并在settings.py
而不是PipelineStorage
中使用它。
另一种方法是在每个collectstatic之后运行自动化任务来清理此目录。这是相同的想法,但在manage
命令本身。