跳转到主要内容

优化你的静态文件。

项目描述

构建静态文件

迟早,你需要在Django应用中添加一个构建步骤;无论是由于SassLessCoffeeAMD,还是仅仅为了优化你的PNG和JPEG文件。Django中有几种方法可以完成这些任务中的一些,但每种都有自己的特定目标,你可能会发现你的构建需求超出了它们的范围。django-staticbuilder采用不同的方法,通过给你一种简单的方法将构建步骤添加到工作流程中,而对构建步骤应该是什么完全没有意见,这使得你可以轻松地利用你想要的任何构建工具。

readthedocs上查看完整的文档。

静态builder构建步骤的核心是buildstatic管理命令,它非常简单。事实上,它只做两件事:首先,它将你的静态文件收集到一个构建目录中,其次,它运行一些shell命令。(真的,看看源代码。它将大部分工作委托给Django的collectstatic。这是一件好事。)

要开始,请将staticbuilder添加到你的INSTALLED_APPS

INSTALLED_APPS = (
    ...
    'staticbuilder',
)

要指定构建目录,请使用STATICBUILDER_BUILD_ROOT设置

STATICBUILDER_BUILD_ROOT = os.path.join(os.path.dirname(__file__), 'static_built')

要指定要运行的shell命令列表,请使用STATICBUILDER_BUILD_COMMANDS设置

STATICBUILDER_BUILD_COMMANDS = [
    'coffee -c /path/to/build_dir',
    'uglifyjs /path/to/build_dir/a.js -c > /path/to/build_dir/a.js',
]

或者(为了使事情更整洁)

STATICBUILDER_BUILD_COMMANDS = ['./bin/mybuildscript']

最后,您需要将一个特殊的查找器添加到您的STATICFILES_FINDERS列表中

STATICFILES_FINDERS = (
    'staticbuilder.finders.BuiltFileFinder',

    # The default Django finders:
    'django.contrib.staticfiles.finders.FileSystemFinder',
    'django.contrib.staticfiles.finders.AppDirectoriesFinder',
)

这个查找器很重要——它是Django在运行collectstatic时找到您文件构建版本的方式。

开发

为了简化开发,这个包包括一个中间件类,它将在请求-响应周期中将构建静态文件作为一部分自动执行。要使用它,只需将其添加到您的MIDDLEWARE_CLASSES设置中

MIDDLEWARE_CLASSES = (
    ...
    'staticbuilder.middleware.BuildOnRequest',
)

现在,每次您访问返回HTML响应的视图时,staticbuilder都会检查自上次构建以来您的静态文件是否已更改。如果有,它将触发一个新的构建。这样,您的静态文件始终是最新的。

为了确保在开发时快速交付响应,您可能需要在不同的情况下使用不同的STATICBUILDER_BUILD_COMMANDS。(例如,在开发时,你可能不需要压缩CSS和JS。)

DEBUGFalse时,此中间件将自动禁用,因此它不会在生产环境中运行。

不构建而收集

“buildstatic”命令实际上是一个两步过程:将静态文件收集到构建目录中,并运行一些shell命令。第一步实际上是一个命令:“collectforbuild”。如果想要执行不同于已配置的构建步骤(例如在部署期间),可以单独运行此命令。

“buildstatic”命令接受一个可选的--nocollect标志,该标志会完全跳过“collectforbuild”步骤。请注意,这意味着在执行“buildstatic --nocollect”之前,“collectforbuild”必须已经执行过。

项目详情


下载文件

下载适用于您平台的文件。如果您不确定选择哪个,请了解有关安装包的更多信息。

源分布

django-staticbuilder-0.6.4.tar.gz (15.8 kB 查看哈希值)

上传时间

由以下机构支持