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