优化你的静态文件。
项目描述
构建静态文件
迟早,你需要在Django应用中添加一个构建步骤;无论是由于Sass、Less、Coffee、AMD,还是仅仅为了优化你的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。)
当DEBUG为False时,此中间件将自动禁用,因此它不会在生产环境中运行。
不构建而收集
“buildstatic”命令实际上是一个两步过程:将静态文件收集到构建目录中,并运行一些shell命令。第一步实际上是一个命令:“collectforbuild”。如果想要执行不同于已配置的构建步骤(例如在部署期间),可以单独运行此命令。
“buildstatic”命令接受一个可选的--nocollect标志,该标志会完全跳过“collectforbuild”步骤。请注意,这意味着在执行“buildstatic --nocollect”之前,“collectforbuild”必须已经执行过。
项目详情
django-staticbuilder-0.6.4.tar.gz 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | d49355f316b1a72770af8df5cbe4ee5e6637eb6d857f7e2bb9334d24ab0408b8 |
|
MD5 | 095c0607afd852f9fb0d18ac3d3da8fe |
|
BLAKE2b-256 | 813a732f276816024bb9253039c5d5699d07fdd1a663e1c2ae423a35db817895 |