【问题标题】:Automatically remove source files after collectstatic with django-pipeline使用 django-pipeline 收集静态后自动删除源文件
【发布时间】:2015-08-12 16:14:35
【问题描述】:

使用django-pipeline,是否可以在collectstatic之后自动删除源文件?

例如:

PIPELINE_JS = {
    'stats': {
        'source_filenames': (
          'js/jquery.js',
          'js/d3.js',
          'js/application.js',
        ),
        'output_filename': 'js/stats.js',
    }
}

收集静态:

$ python manage.py collectstatic
$ ls static/js
jquery.js
d3.js
application.js
stats.js

(我不想要 jquery.js、d3.js、application.js)

【问题讨论】:

    标签: django django-pipeline collectstatic


    【解决方案1】:

    Django-pipeline 在编译包时会发送信号,您可以在docs 中阅读更多相关信息,以及在here 中了解一般信号。你可以像这样挂钩这个信号:

    from pipeline.signals import js_compressed
    
    def clear_files(sender, **kwargs):
        print kwargs
        if 'package' in kwargs:
            print kwargs['package'].sources
            # here remove unwanted files
    
    js_compressed.connect(clear_files)
    

    【讨论】:

    • 我在“models.py”中写道。它有效,但是在“models.py”中写它是否合适?
    • 它有效,但它太丑了。为什么管道不提供一种不将源文件与编译版本一起发布的方法? :(
    • 我不认为它难看。它只是挂钩到库调度的事件。替换一些核心保护函数或模拟整个类会很丑;)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-01-25
    • 1970-01-01
    • 2012-03-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多