Expand description
§tower-minify-html
A Tower layer for minifying HTML responses using minify-html.
§Usage
Add this to your Cargo.toml:
[dependencies]
tower-minify-html = "0.1.0"§Example
use axum::{Router, response::Html, routing::get};
use minify_html::Cfg;
use tower_minify_html::MinifyHtmlLayer;
#[tokio::main]
async fn main() {
let mut cfg = Cfg::new();
cfg.keep_closing_tags = true;
cfg.keep_html_and_head_opening_tags = true;
cfg.keep_comments = false;
let app = Router::new()
.route("/", get(handler))
.layer(MinifyHtmlLayer::new(cfg));
let listener = tokio::net::TcpListener::bind("0.0.0.0:3000").await.unwrap();
axum::serve(listener, app).await.unwrap();
}
async fn handler() -> Html<&'static str> {
Html(
r#"
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title> Hello World </title>
</head>
<body>
<h1> Hello World </h1>
</body>
</html>
"#,
)
}§Features
standard(default): Enables the standardminify-htmlbackend.onepass: Enables theminify-html-onepassbackend.
Both features can be enabled at the same time.
§Backends
You can choose between the standard and onepass backends using the MinifyHtmlLayerBuilder.
§Standard Backend
The standard backend uses minify-html and is the default and can be used with MinifyHtmlLayer::new or the builder.
use tower_minify_html::{MinifyHtmlLayer, Cfg};
let mut cfg = Cfg::new();
let layer = MinifyHtmlLayer::new(cfg);§Onepass Backend
The onepass backend uses minify-html-onepass and is faster but has more limitations. It requires the onepass feature.
use tower_minify_html::{MinifyHtmlLayer, Backend, OnePassCfg};
let mut cfg = OnePassCfg::new();
let layer = MinifyHtmlLayer::builder()
.backend(Backend::Onepass)
.onepass_config(cfg)
.build();§Compression
When using this layer with compression (e.g., tower-http’s CompressionLayer), ensure that MinifyHtmlLayer is applied before the compression layer in your code (i.e., MinifyHtmlLayer should be the inner layer). This ensures that the HTML is minified before it is compressed.
let app = Router::new()
.route("/", get(handler))
.layer(MinifyHtmlLayer::new(cfg))
.layer(CompressionLayer::new());§License
MIT OR Apache-2.0
Structs§
- Cfg
- Configuration settings that can be adjusted and passed to a minification function to change the minification approach.
- Minify
Html - A Tower service for minifying HTML responses.
- Minify
Html Layer - A Tower layer for minifying HTML responses.
- Minify
Html Layer Builder - A builder for
MinifyHtmlLayer.
Enums§
- Backend
- The minification backend to use.