【发布时间】:2015-10-19 04:22:27
【问题描述】:
我将 django-pipeline 与 s3 一起使用。我成功地使用collectstatic 合并了我的Javascript 文件并将它们存储在我的s3 存储桶中,但由于某种原因它们没有被压缩(通过查看文件、它的大小和它的内容编码来验证)。否则,使用生成的组合 scripts.js 可以正常工作。
以下是我使用 django-pipeline 所做的更改:
- 已将
pipeline添加到已安装的应用中。 - 已将
'pipeline.finders.PipelineFinder'添加到STATICFILES_FINDERS。 - 设置
STATICFILES_STORAGE = 'mysite.custom_storages.S3PipelineManifestStorage',该类在文档中定义,如下所示。 - 如下所示设置
PIPELINE_JS,它可以工作,但没有被压缩。 -
PIPELINE_ENABLED = True因为DEBUG = True而我在本地运行。 -
PIPELINE_JS_COMPRESSOR = 'pipeline.compressors.yuglify.YuglifyCompressor'尽管这应该是默认设置。 - 使用
npm -g install yuglify安装了 Yuglify 压缩机。 -
PIPELINE_YUGLIFY_BINARY = '/usr/local/bin/yuglify'即使默认env应该可以工作。 - 使用
{% load pipeline %}和{% javascript 'scripts' %}可以工作。
更多细节:
PIPELINE_JS = {
'scripts': {
'source_filenames': (
'lib/jquery-1.11.1.min.js',
...
),
'output_filename': 'lib/scripts.js',
}
}
class S3PipelineManifestStorage(PipelineMixin, ManifestFilesMixin, S3BotoStorage):
location = settings.STATICFILES_LOCATION
如前所述,collectstatic 确实会生成 scripts.js,只是未压缩。该命令的输出包括:
Post-processed 'lib/scripts.js' as 'lib/scripts.js'
我正在使用 Django 1.8、django-pipeline 1.5.2 和 django-storages 1.1.8。
类似问题:
【问题讨论】:
-
您尝试过
gzip压缩吗,我们遇到了类似的错误,请在github.com/cyberdelia/django-pipeline/issues/312 进行全面讨论 -
我发现 Pipeline 与 django 压缩器相比很难设置。如果您没有使用 gulp 或 grunt 之类的任务管理器,我建议您尝试一下。
-
@Shaikhul 谢谢你,我实际上已经找到了 312 并试图破译。您能否提供一个示例“您需要更改静态文件存储 url 方法以返回 .gz url(以及静态文件/管道模板标签,具体取决于您是否关心不支持 gzip 的客户端)。github.com/cyberdelia/django-pipeline/issues/… 也不要忘记在 s3 上设置正确的标头以将这些资产作为 gzip 压缩。"
标签: python django django-pipeline