minify-html/rust/main/src/minify/css.rs

42 lines
1.2 KiB
Rust
Raw Normal View History

#[cfg(feature = "js-esbuild")]
use {
crate::minify::esbuild::minify_using_esbuild,
2021-08-08 03:58:10 -04:00
esbuild_rs::{
Charset, LegalComments, Loader, SourceMap, TransformOptions, TransformOptionsBuilder,
},
lazy_static::lazy_static,
std::sync::Arc,
};
2021-08-06 02:17:45 -04:00
use crate::cfg::Cfg;
2021-08-10 03:35:14 -04:00
use crate::common::whitespace::trimmed;
2021-08-06 02:17:45 -04:00
#[cfg(feature = "js-esbuild")]
lazy_static! {
2021-08-07 04:59:54 -04:00
pub static ref MINIFY_CSS_TRANSFORM_OPTIONS: Arc<TransformOptions> = {
let mut builder = TransformOptionsBuilder::new();
2021-08-08 02:16:12 -04:00
builder.charset = Charset::UTF8;
builder.legal_comments = LegalComments::None;
builder.loader = Loader::CSS;
builder.minify_identifiers = true;
builder.minify_syntax = true;
builder.minify_whitespace = true;
2021-08-08 02:16:12 -04:00
builder.source_map = SourceMap::None;
builder.build()
};
}
#[cfg(not(feature = "js-esbuild"))]
2021-08-06 09:18:45 -04:00
pub fn minify_css(_cfg: &Cfg, out: &mut Vec<u8>, code: &[u8]) {
2021-08-10 03:35:14 -04:00
out.extend_from_slice(trimmed(code));
}
#[cfg(feature = "js-esbuild")]
pub fn minify_css(cfg: &Cfg, out: &mut Vec<u8>, code: &[u8]) {
if !cfg.minify_css {
2021-08-10 03:35:14 -04:00
out.extend_from_slice(trimmed(code));
} else {
2021-08-08 03:58:10 -04:00
minify_using_esbuild(out, code, &MINIFY_CSS_TRANSFORM_OPTIONS.clone());
}
2021-08-06 02:17:45 -04:00
}