到目前为止我见过的最好的选择是WebAssets。
来自文档:
webassets 是一个通用的、独立于依赖项的库,用于管理 Web 应用程序的资产。它可以合并和压缩您的 CSS 和 JavaScript 文件,支持各种不同的过滤器,并支持使用 CoffeeScript 或 Sass 等编译器。
您可以将它与 tornado 一起以独立模式使用(请参阅特定文档)。
设置简单且非常简单:
from webassets import Environment
static_directory = "../static"
output_directory = "/static"
my_env = Environment(static_directory, output_directory)
当然,您可以更好地自定义它。其余的在文档中得到了很好的解释。
主要特点:
- 易于集成
- 可以提前压缩静态文件(命令行工具)
- 可以动态压缩静态文件
- 支持大多数压缩/压缩库(JS、CSS)
- 支持在浏览器内编译 LESS/SASS
- 支持在浏览器内压缩 JS 模板(Handlebars...)
- 支持 CSS 精灵映射器
正确配置后模板(此处为 Jinja2)的示例:
# css
{% assets filters="cssmin", output="css/compiled-layout.css",
"css/custom.css",
"css/bootstrap-datepicker.css",
"css/typeahead.css" %}
<link rel="stylesheet" type="text/css" href="{{ ASSET_URL }}">
{% endassets %}
# js
{% assets filters="jsmin", output="js/lib/compiled-libs.js",
"js/lib/jquery-2.1.1.min.js",
"js/lib/jquery-ui.min.js",
"js/lib/bootstrap.min.js",
"js/lib/bootstrap-datepicker.js",
"js/lib/d3.min.js",
"js/lib/typeahead.bundle.min.js",
"js/lib/moment.min.js",
"js/lib/handlebars-v2.0.0.js",
"js/global.js" %}
<script type="text/javascript" src="{{ ASSET_URL }}"></script>
{% endassets %}
我已经使用与 Flask 绑定的 WebAssets 一年了,没有任何麻烦,它非常可靠,而且维护良好:它已经存在好几年了,迄今为止的最后一次提交是昨天。