diff --git a/src/pipelines/html.rs b/src/pipelines/html.rs index c869f645..774be406 100644 --- a/src/pipelines/html.rs +++ b/src/pipelines/html.rs @@ -181,7 +181,7 @@ impl HtmlPipeline { // Assemble a new output index.html file. let output_html = match self.cfg.release && !self.cfg.no_minification { - true => minify_html(target_html.html().as_bytes())?, + true => minify_html(target_html.html().as_bytes()), false => target_html.html().as_bytes().to_vec(), }; diff --git a/src/pipelines/mod.rs b/src/pipelines/mod.rs index 533e9228..90fb47a6 100644 --- a/src/pipelines/mod.rs +++ b/src/pipelines/mod.rs @@ -256,7 +256,7 @@ impl AssetFile { bytes = if minify { match file_type { - AssetFileType::Css => minify_css(bytes)?, + AssetFileType::Css => minify_css(bytes), AssetFileType::Icon(image_type) => match image_type { ImageType::Png => oxipng::optimize_from_memory( bytes.as_ref(), @@ -265,8 +265,8 @@ impl AssetFile { .with_context(|| format!("error optimizing PNG {:?}", &self.path))?, ImageType::Other => bytes, }, - AssetFileType::Js => minify_js(&bytes, TopLevelMode::Global)?, - AssetFileType::Mjs => minify_js(&bytes, TopLevelMode::Module)?, + AssetFileType::Js => minify_js(bytes, TopLevelMode::Global), + AssetFileType::Mjs => minify_js(bytes, TopLevelMode::Module), _ => bytes, } } else { diff --git a/src/pipelines/rust/mod.rs b/src/pipelines/rust/mod.rs index b32f83d9..7a436de0 100644 --- a/src/pipelines/rust/mod.rs +++ b/src/pipelines/rust/mod.rs @@ -679,7 +679,7 @@ impl RustApp { .context("error reading JS loader file")?; let write_bytes = match self.cfg.release && !self.cfg.no_minification { - true => minify_js(&bytes, mode).unwrap_or(bytes), + true => minify_js(bytes, mode), false => bytes, }; diff --git a/src/processing/minify.rs b/src/processing/minify.rs index e0b2419f..582dd358 100644 --- a/src/processing/minify.rs +++ b/src/processing/minify.rs @@ -1,35 +1,40 @@ -use anyhow::anyhow; use minify_js::TopLevelMode; /// perform JS minification -pub fn minify_js(bytes: &[u8], mode: TopLevelMode) -> anyhow::Result> { +pub fn minify_js(bytes: Vec, mode: TopLevelMode) -> Vec { let mut result: Vec = vec![]; let session = minify_js::Session::new(); - minify_js::minify(&session, mode, bytes, &mut result) - .map_err(|err| anyhow!("Failed to minify JS: {err}"))?; - Ok(result) + match minify_js::minify(&session, mode, &bytes, &mut result) { + Ok(()) => result, + Err(err) => { + tracing::warn!("Failed to minify JS: {err}"); + bytes + } + } } /// perform CSS minification -pub fn minify_css(bytes: Vec) -> anyhow::Result> { +pub fn minify_css(bytes: Vec) -> Vec { use css_minify::optimizations::*; if let Ok(css) = std::str::from_utf8(&bytes) { - Ok(Minifier::default() - .minify(css, Level::Three) - .map_err(|err| anyhow!("Failed to minify CSS: {err}"))? - .into_bytes()) - } else { - Ok(bytes) + match Minifier::default().minify(css, Level::Three) { + Ok(result) => return result.into_bytes(), + Err(err) => { + tracing::warn!("Failed to minify CSS: {err}"); + } + } } + + bytes } /// perform HTML minification -pub fn minify_html(html: &[u8]) -> anyhow::Result> { +pub fn minify_html(html: &[u8]) -> Vec { let mut minify_cfg = minify_html::Cfg::spec_compliant(); minify_cfg.minify_css = true; minify_cfg.minify_js = true; minify_cfg.keep_closing_tags = true; - Ok(minify_html::minify(html, &minify_cfg)) + minify_html::minify(html, &minify_cfg) }