Askama Minify
编译期压缩 Askama 模板的过程宏 crate。
askama-minify 从 0.3.0 开始不再提供 CLI。它会在编译期读取模板、压缩 HTML/CSS/JavaScript,然后把结果注入为 Askama 的 #[template(source = "...", ext = "...")]。
注意:#[template_minify(...)] 必须放在 #[derive(Template)] 上方,这样宏会先生成 Askama 需要的 #[template(...)] 属性。
用法
use Template;
use template_minify;
路径解析规则:
- 先尝试
CARGO_MANIFEST_DIR/<path> - 再尝试
CARGO_MANIFEST_DIR/templates/<path>
所以常见的 Askama 目录结构可以直接写:
;
对应文件:
templates/index.html
内联模板
use Template;
use template_minify;
使用 source 时必须显式传入 ext。
转发 Askama 参数
path、source、ext 由 askama-minify 处理,其它参数会继续转发给 Askama 的 #[template(...)]:
;
会展开为压缩后的:
说明
- 模板文件会通过
include_str!注入到展开结果里,模板内容变更后 Cargo 能重新编译。 html和htm模板会压缩 HTML;其中的 CSS 使用lightningcss压缩。- JavaScript 和 HTML 压缩目前仍是保守的内置实现,遇到无法安全处理的 CSS 会回退到原内容。
- 非 HTML 扩展会保留原模板内容,只注入为 Askama 的
source。
发布
从干净工作区本地发布: