2014-05-10 63 views
5

我在SITE_ROOT/sources/css裏面有很多CSS文件,我想用django-pipeline只壓縮SITE_ROOT/static/css中的一個文件。如何在Django中使用管道壓縮特定文件?

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文件夾中的縮小文件?

回答

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命令本身。

相關問題