使用django-pipeline 动态压缩静态文件

1 投票
1 回答
682 浏览
提问于 2025-04-18 10:19

我刚开始学习 django-pipeline。如果我理解得没错,我需要指定存放我的CSS和JS文件的文件夹,以便对它们进行压缩。不过,这个过程有点麻烦,因为我的项目比较大,静态文件分散在各个地方(不仅仅在/static/目录下)。

我看到它有集成collectstatic功能,但这并不是我想的那样:它只是收集完静态文件后再运行压缩工具,而且只会压缩我在设置中手动指定的文件,而不是所有的静态文件。

有没有办法让我告诉django-pipeline去压缩我所有的静态文件呢?

1 个回答

1

你可以使用通配符语法来选择多个文件。比如这样,

你不想使用 collectstatic,对吧?

那就用这种方式,

from django.contrib.staticfiles import finders

all_js = ["{0}/{1}".format(st,"*.js") for st in finders.find("", all=True)]
all_css = ["{0}/{1}".format(st,"*.css") for st in finders.find("", all=True)]

PIPELINE_CSS = {
    'colors': {
        'source_filenames': tuple(all_css),
        'output_filename': 'css/colors.css',
        'extra_context': {
            'media': 'screen,projection',
        },
    },
}

PIPELINE_JS = {
    'stats': {
        'source_filenames': tuple(all_js),
        'output_filename': 'js/stats.js',
    }
}

撰写回答