1 #[cfg(feature = "js-esbuild")]
2 use {
3 crate::minify::esbuild::minify_using_esbuild,
4 esbuild_rs::{Charset, LegalComments, SourceMap, TransformOptions, TransformOptionsBuilder},
5 lazy_static::lazy_static,
6 std::sync::Arc,
7 };
8
9 use crate::cfg::Cfg;
10 use crate::common::whitespace::trimmed;
11
12 #[cfg(feature = "js-esbuild")]
13 lazy_static! {
14 static ref TRANSFORM_OPTIONS: Arc<TransformOptions> = {
15 let mut builder = TransformOptionsBuilder::new();
16 builder.charset = Charset::UTF8;
17 builder.legal_comments = LegalComments::None;
18 builder.minify_identifiers = true;
19 builder.minify_syntax = true;
20 builder.minify_whitespace = true;
21 builder.source_map = SourceMap::None;
22 builder.build()
23 };
24 }
25
26 #[cfg(not(feature = "js-esbuild"))]
minify_js(_cfg: &Cfg, out: &mut Vec<u8>, code: &[u8])27 pub fn minify_js(_cfg: &Cfg, out: &mut Vec<u8>, code: &[u8]) {
28 out.extend_from_slice(trimmed(code));
29 }
30
31 #[cfg(feature = "js-esbuild")]
minify_js(cfg: &Cfg, out: &mut Vec<u8>, code: &[u8])32 pub fn minify_js(cfg: &Cfg, out: &mut Vec<u8>, code: &[u8]) {
33 if !cfg.minify_js {
34 out.extend_from_slice(trimmed(code));
35 } else {
36 minify_using_esbuild(out, code, &TRANSFORM_OPTIONS.clone());
37 }
38 }
39