Skip to content

Commit 197f0bc

Browse files
authoredJan 15, 2025··
refactor(es/minifier): Use chili for minify-all example (#9885)
1 parent 9657294 commit 197f0bc

File tree

1 file changed

+63
-64
lines changed

1 file changed

+63
-64
lines changed
 

‎crates/swc_ecma_minifier/examples/minify-all.rs

+63-64
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ use std::{env, fs, path::PathBuf, time::Instant};
66

77
use anyhow::Result;
88
use rayon::prelude::*;
9-
use swc_common::{errors::HANDLER, sync::Lrc, Mark, SourceMap, GLOBALS};
9+
use swc_common::{sync::Lrc, Mark, SourceMap, GLOBALS};
1010
use swc_ecma_ast::Program;
1111
use swc_ecma_codegen::text_writer::JsWriter;
1212
use swc_ecma_minifier::{
@@ -18,6 +18,7 @@ use swc_ecma_transforms_base::{
1818
fixer::{fixer, paren_remover},
1919
resolver,
2020
};
21+
use swc_ecma_utils::parallel::{Parallel, ParallelExt};
2122
use walkdir::WalkDir;
2223

2324
fn main() {
@@ -53,74 +54,72 @@ fn expand_dirs(dirs: Vec<String>) -> Vec<PathBuf> {
5354
.collect()
5455
}
5556

57+
struct Worker;
58+
59+
impl Parallel for Worker {
60+
fn create(&self) -> Self {
61+
Worker
62+
}
63+
64+
fn merge(&mut self, _: Self) {}
65+
}
66+
5667
#[inline(never)] // For profiling
5768
fn minify_all(files: Vec<PathBuf>) {
58-
testing::run_test2(false, |cm, handler| {
59-
GLOBALS.with(|globals| {
60-
HANDLER.set(&handler, || {
61-
let _ = files
62-
.into_iter()
63-
.map(|path| -> Result<_> {
64-
GLOBALS.set(globals, || {
65-
let fm = cm.load_file(&path).expect("failed to load file");
66-
67-
let unresolved_mark = Mark::new();
68-
let top_level_mark = Mark::new();
69-
70-
let program = parse_file_as_module(
71-
&fm,
72-
Default::default(),
73-
Default::default(),
74-
None,
75-
&mut Vec::new(),
76-
)
77-
.map_err(|err| {
78-
err.into_diagnostic(&handler).emit();
79-
})
80-
.map(Program::Module)
81-
.map(|module| {
82-
module.apply(&mut resolver(unresolved_mark, top_level_mark, false))
83-
})
84-
.map(|module| module.apply(&mut paren_remover(None)))
85-
.unwrap();
86-
87-
let output = optimize(
88-
program,
89-
cm.clone(),
90-
None,
91-
None,
92-
&MinifyOptions {
93-
compress: Some(Default::default()),
94-
mangle: Some(MangleOptions {
95-
top_level: Some(true),
96-
..Default::default()
97-
}),
98-
..Default::default()
99-
},
100-
&ExtraOptions {
101-
unresolved_mark,
102-
top_level_mark,
103-
mangle_name_cache: None,
104-
},
105-
);
106-
107-
let output = output.apply(&mut fixer(None));
108-
109-
let code = print(cm.clone(), &[output], true);
110-
111-
fs::write("output.js", code.as_bytes())
112-
.expect("failed to write output");
113-
114-
Ok(())
115-
})
116-
})
117-
.collect::<Vec<_>>();
69+
GLOBALS.set(&Default::default(), || {
70+
Worker.maybe_par(2, files, |_, path| {
71+
testing::run_test(false, |cm, handler| {
72+
let fm = cm.load_file(&path).expect("failed to load file");
73+
74+
let unresolved_mark = Mark::new();
75+
let top_level_mark = Mark::new();
76+
77+
let program = parse_file_as_module(
78+
&fm,
79+
Default::default(),
80+
Default::default(),
81+
None,
82+
&mut Vec::new(),
83+
)
84+
.map_err(|err| {
85+
err.into_diagnostic(handler).emit();
86+
})
87+
.map(Program::Module)
88+
.map(|module| module.apply(&mut resolver(unresolved_mark, top_level_mark, false)))
89+
.map(|module| module.apply(&mut paren_remover(None)))
90+
.unwrap();
91+
92+
let output = optimize(
93+
program,
94+
cm.clone(),
95+
None,
96+
None,
97+
&MinifyOptions {
98+
compress: Some(Default::default()),
99+
mangle: Some(MangleOptions {
100+
top_level: Some(true),
101+
..Default::default()
102+
}),
103+
..Default::default()
104+
},
105+
&ExtraOptions {
106+
unresolved_mark,
107+
top_level_mark,
108+
mangle_name_cache: None,
109+
},
110+
);
111+
112+
let output = output.apply(&mut fixer(None));
113+
114+
let code = print(cm.clone(), &[output], true);
115+
116+
fs::write("output.js", code.as_bytes()).expect("failed to write output");
118117

119118
Ok(())
120119
})
121-
})
122-
})
123-
.unwrap()
120+
.unwrap()
121+
});
122+
});
124123
}
125124

126125
fn print<N: swc_ecma_codegen::Node>(cm: Lrc<SourceMap>, nodes: &[N], minify: bool) -> String {

0 commit comments

Comments
 (0)
Please sign in to comment.